• 华为上机练习题--姓名夫妻相


    题目:

    在中国,形容夫妻恩爱的词汇中,大家用的比較多的就是“夫妻相”。所谓“夫妻相”,就是两个人看上去比較般配。长相、身材等某些方面有一定的相似度。本题则另辟蹊径,从人的姓名维度,以字母反复个数来寻找最具“夫妻相”的人。

    题目中预先给定一组女士的姓名拼音。

    输入男士的姓名拼音(拼音中间能够有空格,字母所有小写),依预先给定姓名拼音的先后遍历所有姓名。输出字母反复数最多的女士姓名。

    规则1:假设字母反复数最多的女士有多位同样,则以最先匹配的女士做为最具“夫妻相”的人选。

    规则2:人名中的同样字母,按反复一次处理。

    比如:li ling 与li lei  反复的字符个数为2,而不是4。

    预置女士名单(先后循序必须保证):
            "wang fei",
            "zhang man yu",
            "zhang zhi yi",
            "li li",
            "li xiao man",
            "li yu cun",
            "yang ni",
            "xiao tong",
            "li lei",
            "zhang san"

    执行时间限制:  无限制 内存限制:  无限制

    输入:  输入一个男士姓名,字符串

    输出:  输出最具“夫妻相”的女士姓名

    分析: 从这题目中我们也能够看出去重的影子,所以先敲定set。 之后的就是依次循环推断包括字符的个数了。 所以这个也是非常easy的题目,废话不多说。 奉上代码;

    代码例如以下:

    package com.wenj.test;

    import java.util.Iterator;
    import java.util.LinkedHashSet;
    import java.util.Set;

    public class TestSelectTheCouple {

        public static void main(String args[]) {
            String strIn = "li ling";
            TestSelectTheCouple ts = new TestSelectTheCouple();
            System.out.println(ts.selectTheCouple(strIn));
        }

        public String selectTheCouple(String strIn) {
            String strTemp = strIn.replaceAll(" ", "");
            String[] wArr = { "wang fei", "zhang man yu", "zhang zhi yi",
                    "li li", "li xiao man", "li yu cun", "yang ni", "xiao tong",
                    "li lei", "zhang san" };
            int[] p = new int[wArr.length];  //存储同样字符个数的数组
            
            char[] ca = strTemp.toCharArray();
            Set<Character> ms = new LinkedHashSet<Character>();
            for(int i=0; i<ca.length; i++){
                ms.add(ca[i]);
            }
            
            int count = 0;
            for(int i=0; i<wArr.length; i++){  //推断各个女的与输入男的同样字符个数并将结果存储在p中
                for(Iterator<Character> it=ms.iterator(); it.hasNext(); ){
                    char temp = it.next();
                    if(wArr[i].contains(temp+"")){
                        count++;
                    }
                }
                p[i] = count;
                count = 0;
            }
            
            int max = p[0];
            int pos = 0;
            for(int i=1; i<p.length; i++){//找出同样字符最多的
                if(p[i]>max){
                    max = p[i];
                    pos = i;
                }
            }
            
            return wArr[pos];   //输出最佳女猪脚
        }
    }

  • 相关阅读:
    教会他人,让其成为你的接棒人
    2015年看的52部电影计划
    我的2015年读书计划,每两周读完一本书!
    拯救你的电脑之文件命名规范与目录规划
    出租WiFi到底靠不靠谱?
    使用观察者模式更新Fragment的内容
    android静默安装和智能安装(转)
    Android拨打电话不弹出系统拨号界面总结
    Android通过AIDL和反射调用系统拨打电话和挂断电话
    Android设为系统默认的短信应用
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5240054.html
Copyright © 2020-2023  润新知