zoukankan      html  css  js  c++  java
  • 华为上机练习题--姓名夫妻相

    题目:

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

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

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

    规则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];   //输出最佳女猪脚
        }
    }

  • 相关阅读:
    DEDECMS里面DEDE函数解析
    dede数据库类使用方法 $dsql
    DEDE数据库语句 DEDESQL命令批量替换 SQL执行语句
    织梦DedeCms网站更换域名后文章图片路径批量修改
    DSP using MATLAB 示例 Example3.12
    DSP using MATLAB 示例 Example3.11
    DSP using MATLAB 示例 Example3.10
    DSP using MATLAB 示例Example3.9
    DSP using MATLAB 示例Example3.8
    DSP using MATLAB 示例Example3.7
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5240054.html
Copyright © 2011-2022 走看看