133-最长单词

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

样例

在词典

{

"dog",

"google",

"facebook",

"internationalization",

"blabla"

}

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

在词典

{

"like",

"love",

"hate",

"yes"

}

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

挑战

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

标签

字符串处理 枚举法 LintCode 版权所有

思路

只遍历一次,默认最长单词为字典中第一个单词,记录其长度 maxLen ,若在之后的遍历中:

  • 若当前单词长度小于 maxLen ,继续遍历
  • 若当前单词长度等于 maxLen ,将此单词加入最长单词序列中
  • 若当前单词长度大于 maxLen ,更新 maxLen 为此单词长度,清除先前的最长单词序列,将此单词加入最长单词序列中

code

class Solution {
public:
/**
* @param dictionary: a vector of strings
* @return: a vector of strings
*/
vector<string> longestWords(vector<string> &dictionary) {
// write your code here
int size = dictionary.size(), maxLen = 0;
if(size <= 0) {
return vector<string>();
} vector<string> result;
maxLen = dictionary[0].size();
result.push_back(dictionary[0]);
for(int i=1; i<size; i++){
if(maxLen < dictionary[i].size()) {
maxLen = dictionary[i].size();
result.clear();
result.push_back(dictionary[i]);
}
else if(maxLen == dictionary[i].size()) {
result.push_back(dictionary[i]);
}
} return result;
}
};

lintcode-133-最长单词的更多相关文章

  1. LintCode之最长单词

    题目描述: 分析:先建一个数组s用来存储每个字符串的长度,然后遍历数组s得到最大的数max,这个数就是词典中的最长单词的长度,由于可能有多个长度相等的单词,所以要循环整个词典,当一个单词的长度等于ma ...

  2. lintcode :最长单词

    题目: 最长单词 给一个词典,找出其中所有最长的单词. 样例 在词典 { "dog", "google", "facebook", &quo ...

  3. OpenJudge就算概论-最长单词2【寻找句子内部最长的单词】

    /*===================================== 最长单词2 总时间限制: 1000ms 内存限制: 65536kB 描述 一个以'.'结尾的简单英文句子,单词之间用空格 ...

  4. 英文长单词断行 word-break VS word-wrap

    你真的了解word-wrap和word-break的区别吗? 这两个东西是什么,我相信至今还有很多人搞不清,只会死记硬背的写一个word-wrap:break-word;word-break:brea ...

  5. CSS3让长单词与URL地址自动换行——word-wrap属性

    div{ word-wrap:break-word; } word-wrap属性可以使用的属性值为normal与break-word两个.使用normal属性值时浏览器默认处理,只在半角空格或者连字符 ...

  6. [LeetCode] Longest Word in Dictionary 字典中的最长单词

    Given a list of strings words representing an English Dictionary, find the longest word in words tha ...

  7. 允许长单词、数字、URL换行到下一行

    CSS3 word-wrap 属性 normal 只在允许的断字点换行(浏览器保持默认处理) break-word 在长单词.数字.URL地址内部进行换行 页面效果图: 源码:

  8. C语言 · 最长单词

    算法提高 最长单词   时间限制:1.0s   内存限制:512.0MB      编写一个函数,输入一行字符,将此字符串中最长的单词输出. 输入仅一行,多个单词,每个单词间用一个空格隔开.单词仅由小 ...

  9. word-wrap与word-break为长单词换行

    如果你遇到长串英文单词或者url换行的问题,这时候就需要用到word-wrap与word-break这2个css属性啦. word-wrap:break-word;长单词与url地址自动换行. wor ...

随机推荐

  1. css选择器有哪些

    css的选择器是还是比较富的,主要的css选择器如下: 标签选择器(如:body,div,p,ul,li) .类选择器(如:class="head",class="hea ...

  2. linux命令之压缩与归档

    1.   gzip:压缩工具 语法·:gzip [选项](参数) 命令说明:运用广泛的压缩程序,文件经它压缩后,其名称后面以“.gz”扩展名 常用命令选项: -N:压缩文件后,保留文件的原文件名和时间 ...

  3. [转]win7下修改C盘USERS文件下的名称

    Win7下C:\Users\Cortana以账户名称命名的系统文件夹用户名的修改   Win7下C:\Users\Cortana以账户名称命名的系统文件夹用户名的修改 Win7下C:\Users\Co ...

  4. Python学习 :格式化输出

    方式一:使用占位符 % 常用占位符:% s   (s = string 字符串)     % d   (d = digit 整数(十进制))   %  f   ( f = float  浮点数) na ...

  5. Java学习笔记一:三步搭建Java开发环境

    Java开发环境搭建 一:安装JDK: 1.下载地址:http://www.oracle.com/technetwork/java/javase/downloads 非常显眼的下载界面 2.点击下载后 ...

  6. 10-C++远征之模板篇-学习笔记

    C++远征之模板篇 将会学到的内容: 模板函数 & 模板类 -> 标准模板类 友元函数 & 友元类 静态数据成员 & 静态成员函数 运算符重载: 一切皆有可能 友元函数 ...

  7. [拉格朗日反演][FFT][NTT][多项式大全]详解

    1.多项式的两种表示法 1.系数表示法 我们最常用的多项式表示法就是系数表示法,一个次数界为\(n\)的多项式\(S(x)\)可以用一个向量\(s=(s_0,s_1,s_2,\cdots,s_n-1) ...

  8. 安装sql server

    因为电脑中只有mysql数据库,所以昨天准备安装一个sql server.安装中出现了许多问题,首先第一遍的时候,安装组件中没有勾选管理工具这个选项,所以在最后的时候,文件夹中只有配置管理器,没有数据 ...

  9. 【转】已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭

    在运用Linq to sql 或者 linq to entity等相关linq技术进行数据库访问操作时,如果发生上述异常是因为是因为.NET內部是使用DataReader作数据存取,DataReade ...

  10. Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org/apache/hadoop/hbase/

    Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org/apache/hadoop/hbase/ ...