【Everyday】(9) 最长单词 - Everyday - SegmentFault
给一个词典,找出其中所有最长的单词。
Read full article from 【Everyday】(9) 最长单词 - Everyday - SegmentFault
给一个词典,找出其中所有最长的单词。
在词典
{
"dog",
"google",
"facebook",
"internationalization",
"blabla"
}
中, 最长的单词集合为 ["internationalization"]
解题思路
首先想到的是先遍历一遍,通过一个标志位来记录下来当前最长的字符串,然后记录下来,当出现了比其长的字符串,则将前面的舍弃,然后再次记录,如果比起短则不考虑,这样的时间复杂度为n,每次更新执行一次removeAll。
public ArrayList<String> longestWords(String[] dictionary) {
// write your code here
ArrayList<String> list = new ArrayList<String>();
if(dictionary==null||dictionary.length==0)
return list;
int lenFlag = 0;
for(String str:dictionary){
if(str!=null){
if(str.length()==lenFlag)
list.add(str);
else if(str.length()>lenFlag){
list.removeAll(list);
list.add(str);
lenFlag = str.length();
}
}
}
return list;
}
Read full article from 【Everyday】(9) 最长单词 - Everyday - SegmentFault