133 最长单词

原题网址:http://www.lintcode.com/zh-cn/problem/longest-words/

给一个词典,找出其中所有最长的单词。

样例

在词典

{
  "dog",
  "google",
  "facebook",
  "internationalization",
  "blabla"
}

中, 最长的单词集合为 ["internationalization"]

在词典

{
  "like",
  "love",
  "hate",
  "yes"
}

中,最长的单词集合为 ["like", "love", "hate"]

挑战 

遍历两次的办法很容易想到,如果只遍历一次你有没有什么好办法?

标签 
 
 1 #include <iostream>
 2 #include <vector>
 3 #include <math.h>
 4 #include <string>
 5 #include <algorithm>
 6 using namespace std;
 7 
 8 vector<string> longestWords(vector<string> &dictionary) //只遍历一次;
 9 {
10     vector<string> result;
11     int size=dictionary.size();
12     int maxlen=0;
13 
14     for (int i=0;i<size;i++)
15     {
16         if (dictionary[i].size()>maxlen)
17         {
18             maxlen=dictionary[i].size();
19             result.clear();
20             result.push_back(dictionary[i]);
21         }    
22         else if (dictionary[i].size()==maxlen)  //尤其注意这里的条件表达式,不能再用if,因为maxlen在上一个if中可能发生变化;
23         {                                                       //这两个if不是并列关系,而是只选择一个的关系,所以应该用else if;
24             result.push_back(dictionary[i]);
25         }
26     }
27 
28     return result;
29 }

 

参考:

https://blog.csdn.net/lyy_hit/article/details/49402757

posted @ 2018-03-23 19:48  eeeeeeee鹅  阅读(173)  评论(0编辑  收藏  举报