lintcode--最长单词

来源:互联网 发布:hip2p 网络摄像机 编辑:程序博客网 时间:2024/05/26 09:54

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

样例

在词典

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

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




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


解题:


其实这个题目如果不是在这里做,我只能会暴力了,但是lintcode给你了需要返回的值,这个是很大的提示,这个题返回类型是ArrayList<String> ,然后就有思路了。值选取比较长的字符,加入list中,当碰到更长的时候可以清空list。*/
class Solution {
    ArrayList<String> longestWords(String[] dit) {
        // write your code here
        ArrayList<String> list = new ArrayList<String>();
        if( dit.length==0) return list;
        //1.先保存第一个单词的长度
        int len = dit[0].length();
        list.add(dit[0]);
        for( int i = 1;i<dit.length;i++){
            String tmp = dit[i];
            
            if( tmp.length()==len){
                list.add( tmp );
                //如果长度大于之前的
            }else if(tmp.length()> len){
                //先清除
                list.clear();
                list.add(tmp);
                len = tmp.length();
            }
        }
        return list;
    }
};

原创粉丝点击