2013-02-20 58 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

相關問題