题目描述
在中国,形容夫妻恩爱的词汇中,大家用的比较多的就是“夫妻相”。所谓“夫妻相”,就是两个人看上去比较般配,长相、身材等某些方面有一定的相似度。本题则另辟蹊径,从人的姓名维度,以字母重复个数来寻找最具“夫妻相”的人。题目中预先给定一组女士的姓名拼音。输入男士的姓名拼音(拼音中间可以有空格,字母全部小写),依预先给定姓名拼音的先后遍历所有姓名,输出字母重复数最多的女士姓名。
规则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"
输入
输入一个男士姓名
输出
输出最具“夫妻相”的女士姓名
样例输入
li si
样例输出
li li
提示
地区
公共
产品线
公共
阶段
入职前练习
public static void main(String[] args) {
String input="wang fei,zhang man yu,zhang zhi yi,li li," +
"li xiao man,li yu cun,yang ni,xiao tong,li lei,zhang san";
String[] femaleNames=input.split(",");
getHusbandWifeLooks(femaleNames);
}
public static void getHusbandWifeLooks(String[] femaleNames){
Scanner sc=new Scanner(System.in);
String maleName=sc.nextLine();
LinkedHashSet<Character> ls=new LinkedHashSet<Character>();
LinkedHashMap<String,Integer> lhm=new LinkedHashMap<String,Integer>();
int count=0;
for(int i=0;i<femaleNames.length;i++){
char[] c=femaleNames[i].toCharArray();
for(int j=0;j<c.length;j++){
if(c[j]!=32)
ls.add(c[j]);
}
for(char cc:ls){
if(maleName.contains(String.valueOf(cc))){
count++;
}
}
ls.clear();
lhm.put(femaleNames[i], count);
count=0;
}
System.out.println(lhm);
List<Map.Entry<String,Integer>> li=new ArrayList<Map.Entry<String,Integer>>(lhm.entrySet());
Collections.sort(li, new Comparator<Map.Entry<String,Integer>>(){
@Override
public int compare(Entry<String, Integer> o1,Entry<String, Integer> o2) {
return o2.getValue()-o1.getValue();
}});
System.out.println(li.get(0).getKey());
}