天天看點

華為上機練習題–姓名夫妻相「建議收藏」

大家好,又見面了,我是全棧君。

題目:

在中國,形容夫妻恩愛的詞彙中,大家用的比較多的就是“夫妻相”。所謂“夫妻相”,就是兩個人看上去比較般配。長相、身材等某些方面有一定的相似度。本題則另辟蹊徑,從人的姓名次元,以字母反複個數來尋找最具“夫妻相”的人。

題目中預先給定一組女士的姓名拼音。

輸入男士的姓名拼音(拼音中間能夠有空格,字母所有小寫),依預先給定姓名拼音的先後周遊所有姓名。輸出字母反複數最多的女士姓名。

規則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