2023華為OD統(tǒng)一考試(A+B卷)題庫清單-帶答案(持續(xù)更新)or2023年華為OD真題機考題庫大全-帶答案(持續(xù)更新)
題目描述:
單詞接龍的規(guī)則是:
用于接龍的單詞首字母必須要前一個單詞的尾字母相同;
當(dāng)存在多個首字母相同的單詞時,取長度最長的單詞,如果長度也相等,則取字典序最小的單詞;
已經(jīng)參與接龍的單詞不能重復(fù)使用。
現(xiàn)給定一組全部由小寫字母組成單詞數(shù)組,并指定其中的一個單詞作為起始單詞,進行單詞接龍。請輸出最長的單詞串,單詞串是單詞拼接而成,中間沒有空格。
輸入描述:
輸入的第一行為一個非負(fù)整數(shù),表示起始單詞在數(shù)組中的索引K,0 <= K < N。
輸入的第二行為一個非負(fù)整數(shù),表示單詞的個數(shù)N。
接下來的N行,分別表示單詞數(shù)組中的單詞。
輸出描述:輸出一個字符串,表示最終拼接的單詞串。
備注:單詞個數(shù)N的取值范圍為[1, 20]
單個單詞的長度的取值范圍為[1, 30]
————————————————示例
輸入:
0
6
word
dd
da
dc
dword
d
輸出:worddwordda
說明:先確定起始單詞word,再接以d開頭的且長度最長的單詞dword,剩余以d開頭且長度最長的有dd、da、dc,則取字典序最小的da,所以最后輸出worddwordda。
輸入:4
6
word
dd
da
dc
dword
d
輸出:dwordda
說明:文章來源:http://www.zghlxwxcb.cn/news/detail-627363.html先確定起始單詞dword,剩余以d開頭且長度最長的有dd、da、dc,則取字典序最小的da,所以最后輸出dwordda。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-627363.html
public class WordRelay {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int beginIndex = Integer.parseInt(sc.nextLine());
int wordNums = Integer.parseInt(sc.nextLine());
String [] word = new String[wordNums];
List<Word> wordInfo = new LinkedList<>();
for (int i = 0; i < wordNums; i++){
word[i] = sc.next();
if (i != beginIndex){
wordInfo.add(new Word(word[i].length(),word[i]));
}
}
find(word,beginIndex,wordInfo);
}
/**
* 給List<Word>排序,初始化準(zhǔn)備
* @param word
* @param beginIndex
* @param wordInfo
*/
public static void find(String[] word, int beginIndex , List<Word> wordInfo ){
Collections.sort(wordInfo, (o1, o2) -> {
if (o1.length != o2.length){
return o2.length - o1.length;
}else {
return o1.word.compareTo(o2.word);
}
});
//起始值
String beginWord = word[beginIndex];
String endSingleWord = beginWord.substring(beginWord.length()-1,beginWord.length());
StringBuffer sb = new StringBuffer();
sb.append(beginWord);
appendWord(wordInfo, endSingleWord, sb,true);
}
/**
* 從大到小的長度順序拼接
* @param wordInfo
* @param endSingleWord
* @param sb
* @param end
*/
private static void appendWord(List<Word> wordInfo, String endSingleWord, StringBuffer sb,Boolean end) {
while (end){
end = false;
for (int i = 0; i < wordInfo.size(); i++){
if (endSingleWord.equals(String.valueOf(wordInfo.get(i).word.charAt(0)))){
sb.append(wordInfo.get(i).word);
endSingleWord = wordInfo.get(i).word.substring(wordInfo.get(i).word.length()-1,wordInfo.get(i).word.length());
//添加完移除
wordInfo.remove(i);
end = true;
break;
}
}
}
System.out.println(sb.toString());
}
@Data
public static class Word{
int length;
String word;
public Word(int length, String word) {
this.length = length;
this.word = word;
}
}
}
到了這里,關(guān)于華為OD機考真題--單詞接龍--帶答案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!