0
点赞
收藏
分享

微信扫一扫

《中英双解》leetcode Longest WordIn Dictionary

一天清晨 2022-02-16 阅读 29
package Sort;

import java.util.HashSet;
import java.util.Set;

public class LongestWordInDictionary {
    //        1.返回参与比较的前后两个字符串的ASCII码的差值,如果两个字符串首字母不同,则该方法返回首字母的ASCII码的差值。
//        String a1 = "a";
//        String a2 = "c";
//        System.out.println(a1.compareTo(a2));//结果为-2
//        2.参与比较的两个字符串如果首字符相同,则比较下一个字符,直到有不同的为止,返回该不同的字符的asc码差值。
//        String a1 = "aa";
//        String a2 = "ad";
//        System.out.println(a1.compareTo(a2));//结果为-3
//        3.如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值。
//        String a1 = "aa";
//        String a2 = "aa12345678";
//        System.out.println(a1.compareTo(a2));//结果为-8
//        4.返回为正数表示a1>a2, 返回为负数表示a1<a2, 返回为0表示a1==a2。
//        5.int型可以直接比较,所以没有用到compareTo比较,如果声明的是Date、String、Integer、或者其他的,可以直接使用compareTo比较。
//        Integer n1 = 5;
//        Integer n2 = 6;
//        System.out.println(n1.compareTo(n2));//-1

//        给出一个字符串数组 words 组成的一本英语词典。返回 words 中最长的一个单词,该单词是由 words 词典中其他单词逐步添加一个字母组成。
//        若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。

    public static String longestWord(String[] words){
       String ans = "";
       //只存储的时候可以使用set
        Set<String> wordSet = new HashSet<>();
        for(String word : words){
            wordSet.add(word);
        }
        for(String word : words){
            if(word.length() > ans.length() || word.length() == ans.length() && word.compareTo(ans) < 0){
                boolean good = true;
                for(int i = 1;i < word.length();i++){
                    if(!wordSet.contains(word.substring(0,i))){
                        good = false;
                        break;
                    }
                }
                if(good){
                    ans = word;
                }
            }
        }
        return ans;
    }

    public static void main(String[] args) {
        System.out.println(longestWord(new String[]{"w","wo","wor","worl", "world"}));
    }
}

 

举报

相关推荐

0 条评论