lintcode 容易题:Longest Words 最长单词

题目:

最长单词

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

样例

在词典

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

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

在词典

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

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

挑战

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

解题:

其实这个题目如果不是在这里做,我只能会暴力了,但是lintcode给你了需要返回的值,这个是很大的提示,这个题返回类型是ArrayList<String> ,然后就有思路了。值选取比较长的字符,加入list中,当碰到更长的时候可以清空list。

Java程序:

class Solution {
    /**
     * @param dictionary: an array of strings
     * @return: an arraylist of strings
     */
    ArrayList<String> longestWords(String[] dictionary) {
        // write your code here
        ArrayList<String> result = new ArrayList<String>();
        if( dictionary.length==0)
            return result;
        int dictlen = dictionary[0].length();
        result.add(dictionary[0]);
        for( int i = 1;i<dictionary.length;i++){
            String tmp = dictionary[i];
            if( tmp.length()==dictlen){
                result.add( tmp );
            }else if(tmp.length()> dictlen){
                result.clear();
                result.add(tmp);
                dictlen = tmp.length();
            }
        }
        return result;
    }
};

总耗时: 1798 ms

Python程序:

class Solution:
    # @param dictionary: a list of strings
    # @return: a list of strings
    def longestWords(self, dictionary):
        # write your code here
        m = len( dictionary )
        result = []
        if m ==0:
            return result
        dictlen = len(dictionary[0])
        result.append(dictionary[0])
        for d in range(1,m):
            tmp = dictionary[d]
            if len(tmp) == dictlen:
                result.append(tmp)
            elif len(tmp)> dictlen:
                result = []
                dictlen = len(tmp)
                result.append(tmp)
        return result

总耗时: 405 ms

时间: 2024-10-07 16:11:36

lintcode 容易题:Longest Words 最长单词的相关文章

LeetCode 第 3 题(Longest Substring Without Repeating Characters)

LeetCode 第 3 题(Longest Substring Without Repeating Characters) Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answer is "abc", which the length is 3. Given "b

编程题:输入英文月份单词,输出对应月的数字形式。

#include<stdio.h> #include<string.h> int search(char list[][20],char name[],int m) { int i; for(i=0;i<m;i++) if(strcmp(list[i],name)==0) break; return i; } void main() { char month_list[12][20]={"January","February",&quo

(算法)最长单词

题目: 给定一组单词,找出其中的最长单词,且该单词由这组单词中的其他单词组成. 思路: 首选将单词按照字符串大小从大到小排序,然后依次判断该单词是否由其他单词组成. 将单词保存在散列表中,这样容易查找. 判断单词组成:依次切分为左右两个字符串,然后递归查找判断.(为避免重复计算,在每一次递归中都保存中间结果,即把是否可以组成单词的结果都保存在散列表中) 代码: #include<iostream> #include<vector> #include<map> #incl

C语言 &#183; 最长单词

算法提高 最长单词 时间限制:1.0s   内存限制:512.0MB 编写一个函数,输入一行字符,将此字符串中最长的单词输出. 输入仅一行,多个单词,每个单词间用一个空格隔开.单词仅由小写字母组成.所有单词的长度和不超过100000.如有多个最长单词,输出最先出现的. 样例输入 I am a student 样例输出 student 1 #include<stdio.h> 2 #include<string.h> 3 #define max 100000 4 int is_zimu

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

div{ word-wrap:break-word; } word-wrap属性可以使用的属性值为normal与break-word两个.使用normal属性值时浏览器默认处理,只在半角空格或者连字符的地方进行换行.使用break-word时浏览器可在长单词或URL地址内部进行换行. 目前,word-wrap属性得到了所有浏览器的支持.

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

你真的了解word-wrap和word-break的区别吗? 这两个东西是什么,我相信至今还有很多人搞不清,只会死记硬背的写一个word-wrap:break-word;word-break:break-all;这样的东西来强制断句,又或者是因为这两个东西实在是太拗口了,长得又差不多,导致连背都很难背下来. 那它们到底是什么呢?我在mozilla的官网上找到如下的解释: word-wrap word-break 我们看到两个解释中都出现了 break lines within words 这样的

IT公司100题-10-翻转句子中单词的顺序

问题描述: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. 句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如输入“Hello world!”,则输出“world! Hello”. 分析: 先翻转各个单词,然后整体翻转即可. 参考代码: 1 // 10.cc 2 #include <iostream> 3 #include <cstring> 4 #include <string> 5 using namespace std; 6

【北航软件工程】最长单词链

Part.1 github链接 Part.2 PSP2.1 Personal Software Process Stages 预计耗时(分钟) 实际耗时(分钟) Planning 计划 15 10 PSP2.1 估计这个任务需要多少时间 15 10 Development 计划 1120 1360 · Analysis 需求分析 (包括学习新技术) 120 150 · Design Spec 生成设计文档 30 30 · Design Review 设计文档复审 10 10 · Coding S

返回最长单词的字母个数

返回最长单词的字母个数 Javascript 这种写法太清晰了. 使用了 Math的 max. 用了 Array 的 map 迭代. 用了回调. 用了字符串的分隔. return Math.max.apply(Math, str.split(" ").map(function(el) { return el.length;})); 原文地址:https://www.cnblogs.com/F4NNIU/p/10677107.html