[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;
    }
原文地址:https://www.cnblogs.com/stAr-1/p/8343352.html