题目:
容易 最长单词
36%
通过
给一个词典,找出其中所有最长的单词。
您在真实的面试中是否遇到过这个题?Yes
样例
在词典
{
"dog",
"google",
"facebook",
"internationalization",
"blabla"
}
中, 最长的单词集合为 ["internationalization"]
在词典
{
"like",
"love",
"hate",
"yes"
}
中,最长的单词集合为 ["like", "love", "hate"]
挑战
解答:遍历两次的办法很容易想到,如果只遍历一次你有没有什么好办法?
依次遍历,长度相等,加入;若小于当前字符串的长度,则废弃原来的ArrayList,添加当前字符串
代码:
class Solution {
/**
* @param dictionary: an array of strings
* @return: an arraylist of strings
*/
ArrayList<String> longestWords(String[] dictionary) {
// write your code here
if(dictionary == null)
return null;
String[] dic = dictionary;
ArrayList<String> array = new ArrayList<String>();
array.add(dic[0]);
int len = dic.length;
int longest = dic[0].length();;
int i =1;
int lenTmp = -1;
while(i < len){
lenTmp = dic[i].length();
if(longest < lenTmp){
longest = lenTmp;
array = new ArrayList<String>();
array.add(dic[i]);
}else if(longest == lenTmp){
array.add(dic[i]);
}
i++;
}
return array;
}
};
* @param dictionary: an array of strings
* @return: an arraylist of strings
*/
ArrayList<String> longestWords(String[] dictionary) {
// write your code here
if(dictionary == null)
return null;
String[] dic = dictionary;
ArrayList<String> array = new ArrayList<String>();
array.add(dic[0]);
int len = dic.length;
int longest = dic[0].length();;
int i =1;
int lenTmp = -1;
while(i < len){
lenTmp = dic[i].length();
if(longest < lenTmp){
longest = lenTmp;
array = new ArrayList<String>();
array.add(dic[i]);
}else if(longest == lenTmp){
array.add(dic[i]);
}
i++;
}
return array;
}
};

本文介绍了一种算法,用于从给定的词典中找出所有最长的单词。通过一次遍历即可实现,提高了效率。

1万+

被折叠的 条评论
为什么被折叠?



