zoukankan      html  css  js  c++  java
  • [leetcode]720. Longest Word in Dictionary字典中最长的单词

    b.compareTo(a)

    这个函数是比较两个值得大小,如果b比a大,那么返回1

    如果小,那么返回-1,相等返回0

    如果比较的是字符串,那么比较字典编纂顺序,b靠前返回-1,靠后返回1

    这个题的核心虽然是hashtable,但是这个方法还是很重要的,因为自己实现比较字符串很麻烦

    /*
        用一个Hashset来判断子串是不是在集合里
        然后遍历出最长的就行
        长度相同的用compareTo方法判断谁的字典顺序靠前
        这个题最难的感觉其实是不知道compareTo方法,自己实现还挺麻烦的
         */
        public String longestWord(String[] words) {
            //构建set
            Set<String> set = new HashSet<>();
            for (String s :
                    words) {
                set.add(s);
            }
            //记录最大长度字符串
            String res = "";
            //遍历判断
            for (String s :
                    words) {
                //两种情况值得更新,一种是长度更长,一种是长度一样但是顺序靠前
                if (s.length() > res.length() || (s.length() == res.length() && s.compareTo(res) < 0)) {
                    //判断字符串的子串在不在集合里
                    boolean judge = true;
                    for (int i = s.length() - 1; i > 0; i--) {
                        if (!set.contains(s.substring(0, i))) {
                            judge = false;
                            break;
                        }
                    }
                    if (judge)
                        res = s;
                }
            }
            return res;
        }
  • 相关阅读:
    CSU 1333 Funny Car Racing
    FZU 2195 检查站点
    FZU 2193 So Hard
    ZOJ 1655 FZU 1125 Transport Goods
    zoj 2750 Idiomatic Phrases Game
    hdu 1874 畅通工程续
    hdu 2489 Minimal Ratio Tree
    hdu 3398 String
    洛谷 P2158 [SDOI2008]仪仗队 解题报告
    POJ 1958 Strange Towers of Hanoi 解题报告
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8343352.html
Copyright © 2011-2022 走看看