您的位置:首页 > 其它

720. Longest Word in Dictionary

2017-11-30 10:24 344 查看

Given a list of strings 

words
 representing an English Dictionary, find the longest word in 
words
 that can be built one character at a time by other words in 
words
. If there is more than one possible answer, return the longest word with the smallest lexicographical order.

If there is no answer, return the empty string.

Example 1:

Input:
words = ["w","wo","wor","worl", "world"]
Output: "world"
Explanation:
The word "world" can be built one character at a time by "w", "wo", "wor", and "worl".

 

Example 2:

Input:
words = ["a", "banana", "app", "appl", "ap", "apply", "apple"]
Output: "apple"
Explanation:
Both "apply" and "apple" can be built from other words in the dictionary. However, "apple" is lexicographically smaller than "apply".

 

Note:

  • All the strings in the input will only contain lowercase letters.
  • The length of 
    words
     will be in the range 
    [1, 1000]
    .
  • The length of 
    words[i]
     will be in the range 
    [1, 30]
    .

 

找出数组里最长的字符串,该字符串的子集也要在这个数组里,有多个答案则输出字典序最小的

 

C++(52ms):

1 class Solution {
2 public:
3     string longestWord(vector<string>& words) {
4         sort(words.begin(),words.end()) ;
5         unordered_set<string> Set;
6         string res = "" ;
7         for(string w : words){
8             if (w.length() == 1 || Set.count(w.substr(0,w.length()-1))){
9                 res = w.length() > res.length() ? w : res ;
10                 Set.insert(w) ;
11             }
12         }
13         return res ;
14     }
15 };

 

Java(36ms):

1 class Solution {
2     public String longestWord(String[] words) {
3         Arrays.sort(words);
4         Set<String> set = new HashSet<String>();
5         String res = "";
6         for (String w : words) {
7             if (w.length() == 1 || set.contains(w.substring(0, w.length() - 1))) {
8                 res = w.length() > res.length() ? w : res;
9                 set.add(w);
10             }
11         }
12         return res;
13     }
14 }

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: