给一个词典,找出其中所有最长的单词。
在词典
{
"dog",
"google",
"facebook",
"internationalization",
"blabla"
}
中, 最长的单词集合为 ["internationalization"]
/*遍历两次的办法很容易想到,如果只遍历一次你有没有什么好办法?
解题:
其实这个题目如果不是在这里做,我只能会暴力了,但是lintcode给你了需要返回的值,这个是很大的提示,这个题返回类型是ArrayList<String> ,然后就有思路了。值选取比较长的字符,加入list中,当碰到更长的时候可以清空list。*/
class Solution {
ArrayList<String> longestWords(String[] dit) {
// write your code here
ArrayList<String> list = new ArrayList<String>();
if( dit.length==0) return list;
//1.先保存第一个单词的长度
int len = dit[0].length();
list.add(dit[0]);
for( int i = 1;i<dit.length;i++){
String tmp = dit[i];
if( tmp.length()==len){
list.add( tmp );
//如果长度大于之前的
}else if(tmp.length()> len){
//先清除
list.clear();
list.add(tmp);
len = tmp.length();
}
}
return list;
}
};