我一直在試圖弄清楚解決這個問題的最佳方法。我如何檢查一個詞是否在字典中,並將用戶輸入插入到數組中
我堅持的問題是我需要把用戶輸入(單詞)放在數組中,並嘗試確認/驗證它們使用的所有字母是否在char數組中(生成10個隨機數字母)(letterpool),然後再次檢查他們使用的單詞是否在字典中有效。
我有一個名爲「dict.txt」的字典,其中包含80k字的小寫字母 字典。我需要以某種方式採取輸入(大寫),並能夠找到字典的小寫字
我希望你們可以幫助我,編程語言Java 在此先感謝!
埃裏克
我一直在試圖弄清楚解決這個問題的最佳方法。我如何檢查一個詞是否在字典中,並將用戶輸入插入到數組中
我堅持的問題是我需要把用戶輸入(單詞)放在數組中,並嘗試確認/驗證它們使用的所有字母是否在char數組中(生成10個隨機數字母)(letterpool),然後再次檢查他們使用的單詞是否在字典中有效。
我有一個名爲「dict.txt」的字典,其中包含80k字的小寫字母 字典。我需要以某種方式採取輸入(大寫),並能夠找到字典的小寫字
我希望你們可以幫助我,編程語言Java 在此先感謝!
埃裏克
我想創建一個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,則你的單詞不在你的隨機數組中使用。
這個實現,你可以很容易地擴展更多的功能,如計算其在字中的字母...
對於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)))
謝謝你。關於字典,它在不同的類然而我有一個字符串數組(public String [] words = null;)我需要繼承這個主類以驗證一個單詞是否在字典中 – Eric
請先試試自己,然後再回答一個具體問題。 –
請將您的代碼添加到您的問題。從這一點我們將很樂意爲您提供幫助。 – TDG
@TDG代碼現在在問題中。非常感謝你,我被困在幾個星期,沒有運氣 – Eric