2013-02-20 94 views
-2

假设我有如何从给定的字母中找到最长的单词。 <java>

String letters="CATOPHAPY"; 

,我有辞典中阵列的形式来检查。

String[] dict=new String[996]; 

我如何从字母构建最长的单词与单词检查它在字典,我有之前

谢谢

+4

我可以编写代码来为你做这个。我预付了至少两小时的费用,每小时收费100美元。你有贝宝? – 2013-02-20 17:53:49

+0

你想如何打破关系?假设在这种情况下,两个最长的单词是'CAT'和'TOP',它返回的是哪一个? – souldzin 2013-02-20 17:55:27

+1

如果您真正拥有的是996个条目的词典,那么通过一切手段仔细检查该词典,并检查是否所有字母都出现在您的字符串中。按字大小降序对字典进行排序。 – 2013-02-20 17:55:36

回答

5
  1. 准备的字典单词的数组,但这样的字母每个条目的排序;
  2. 按字数大小排序字典本身,降序;
  3. 以与字典中相同的顺序对输入字符串中的字母进行排序;
  4. 从顶部到底部查看词典,找到输入中包含所有字母的第一个条目。由于排序,这可以实现为O(n)。

广告1,3

char[] toSort = original.toCharArray(); 
Arrays.sort(toSort); 
String sorted = new String(toSort); 

广告2.

Arrays.sort(dict, (String a, String b) -> b.length() - a.length()); 

广告4.

boolean isMatch(String dictWord, String inputWord) { 
    for (int i = 0, j = 0; i < dictWord.length();) { 
    if (j >= inputWord.length()) return false; 
    char d = dictWord.charAt(i), n = inputWord.charAt(j); 
    if (d < n) return false; 
    if (d >= n) j++; 
    if (d == n) i++; 
    } 
    return true; 
} 
+0

我已经尝试了很多次,但没有奏效。无论如何谢谢你的回答。 – KEI 2013-02-23 14:49:43

相关问题