2016-05-23 64 views
-1

我一直在試圖弄清楚解決這個問題的最佳方法。我如何檢查一個詞是否在字典中,並將用戶輸入插入到數組中

我堅持的問題是我需要把用戶輸入(單詞)放在數組中,並嘗試確認/驗證它們使用的所有字母是否在char數組中(生成10個隨機數字母)(letterpool),然後再次檢查他們使用的單詞是否在字典中有效。

我有一個名爲「dict.txt」的字典,其中包含80k字的小寫字母 字典。我需要以某種方式採取輸入(大寫),並能夠找到字典的小寫字

我希望你們可以幫助我,編程語言Java 在此先感謝!

埃裏克

+2

請先試試自己,然後再回答一個具體問題。 –

+0

請將您的代碼添加到您的問題。從這一點我們將很樂意爲您提供幫助。 – TDG

+0

@TDG代碼現在在問題中。非常感謝你,我被困在幾個星期,沒有運氣 – Eric

回答

0

我想創建一個HashMap<Character, Integer>,把隨機字母在地圖中。

map.put(letter, 0); 

然後我會去通過從字母詞,併爲此

Integer value = map.get(letterFromYourWord); 
if(value == null){ 
    //raise exception because the letter from your word is not in your random array 
} else { 
    // increment the value from the map 
    map.put(letterFromYourWord, value++); 
} 

然後通過地圖,並檢查值不爲0如果有一個值爲0,則你的單詞不在你的隨機數組中使用。

這個實現,你可以很容易地擴展更多的功能,如計算其在字中的字母...

0

對於validWord功能我建議利用爲有序陣列的二進制搜索。類似的規定:

static boolean validWord(String word, final char[] letters) 
    { 
     char[] lettersCopy = letters.clone(); 
     Arrays.sort(lettersCopy); // sort so we can use binary search   
     for(char c : word.toCharArray()) 
     { 
      if(Arrays.binarySearch(lettersCopy, c) < 0) //char c from word not in letterPool? 
      { 
       return false; 
      } 
     } 
     return true;  
    } 

然後在你所受的試驗循環中,您只需調用它像這樣:

  if (validWord(input,letterPool)) 
      { 
       System.out.println("Yes, the letters match");  
      }else { 
       System.out.println("No"); 
      } 

我不知道你使用的是有字典類,所以我不能幫你。

btw: Arctigors使用hashmaps的回答是更多的cpu性能,但在內存方面更爲沉重。 (O(n)代替O(n * lb(m)))

+0

謝謝你。關於字典,它在不同的類然而我有一個字符串數組(public String [] words = null;)我需要繼承這個主類以驗證一個單詞是否在字典中 – Eric

相關問題