大家好,又見面了,我是全棧君。
題目:
在中國,形容夫妻恩愛的詞彙中,大家用的比較多的就是“夫妻相”。所謂“夫妻相”,就是兩個人看上去比較般配。長相、身材等某些方面有一定的相似度。本題則另辟蹊徑,從人的姓名次元,以字母反複個數來尋找最具“夫妻相”的人。
題目中預先給定一組女士的姓名拼音。
輸入男士的姓名拼音(拼音中間能夠有空格,字母所有小寫),依預先給定姓名拼音的先後周遊所有姓名。輸出字母反複數最多的女士姓名。
規則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]; //輸出最佳女豬腳
}
}
釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/115810.html原文連結:https://javaforall.cn