题目:
容易 最长单词
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;
}
};