码迷,mamicode.com
首页 > 其他好文 > 详细

LintCode_133 最长单词

时间:2016-05-04 13:20:23      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

题目

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

样例

在词典

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

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

在词典

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

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

思路

用动态规划的思路解决

vector<string> s;

假设我已经求出了前i个单词的最长集合S(i);

用L(i)表示最长集合S(i)的单词长度;

求S(i + 1)则分为三种情况

if(L(i) > dictionary[i + 1].length) S(i + 1) = S(i);

else if(L(i) == dictionary[i + 1].length) S(i + 1) = S(i) + dictionary[i + 1];

else if(L(i) < dictionary[i + 1].length)

{

  S(i + 1) = dictionary[i + 1];

}

C++代码

vector<string> longestWords(vector<string> &dictionary) {
        // write your code here
        vector<string> s;
        int i;
        s.push_back(dictionary[0]);
        int t;
        for(i = 1; i < dictionary.size(); ++i)
        {
            if(s[0].length() == dictionary[i].length()) s.push_back(dictionary[i]);
            else if(s[0].length() < dictionary[i].length())
            {
                s.clear();
                s.push_back(dictionary[i]);
            }
        }
        return s;
}

  

 

LintCode_133 最长单词

标签:

原文地址:http://www.cnblogs.com/Smallhui/p/5458014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!