Given a dictionary, find all of the longest words in the dictionary.
Example
Given
{
"dog",
"google",
"facebook",
"internationalization",
"blabla"
}
the longest words are(is) ["internationalization"]
.
Given
{
"like",
"love",
"hate",
"yes"
}
the longest words are ["like", "love", "hate"]
.
解题思路:
贪心算法。以字符的最长长度maxSize为贪心标记,初始化第一个元素为最长字符串,存入结果result数组中,遍历数组。
如果后面的元素长度与maxSize相等,则继续存入result数组;
如果后面元素长度大于maxSize时,说明前面的所有存进的变量皆小于这个长度,所以将result清空,重新修正maxSize,将新的元素存入result;
如果后面元素长度小于maxSize时,则不需做任何操作,继续遍历下一个元素。
class Solution {
public:
/*
* @param dictionary: an array of strings
* @return: an arraylist of strings
*/
vector<string> longestWords(vector<string> &dictionary)
{
// write your code here
vector<string>::iterator it = dictionary.begin();//遍历指针
int maxSize = it->size();//最长字符的长度
vector<string> result;//存放结果
for(;it != dictionary.end();it++)
{
if(it->size() == maxSize)
result.push_back(*it);
else if(it->size() > maxSize)
{
maxSize = it->size();
result.clear();
result.push_back(*it);
}
}
return result;
}
};