Arrays 如何检查字典中是否有插入到数组中的用户输入的单词

Arrays 如何检查字典中是否有插入到数组中的用户输入的单词,arrays,validation,dictionary,input,Arrays,Validation,Dictionary,Input,我一直在想,解决这个问题的最好办法 我遇到的问题是,我需要获取用户输入(word)并将其放入数组中,然后尝试确认/验证他们使用的所有字母是否都在char数组中(生成10个随机字母)(letterpool),然后再次检查他们使用的单词是否从字典中有效 我有一本名为“dict.txt”的字典,里面有80k个小写单词 字典。我需要以某种方式接受输入(大写),并能够找到字典中小写的单词 我希望你们能帮助我,编程语言Java 提前谢谢 Eric我会创建一个HashMap并将随机字母放入映射中 map.pu

我一直在想,解决这个问题的最好办法

我遇到的问题是,我需要获取用户输入(word)并将其放入数组中,然后尝试确认/验证他们使用的所有字母是否都在char数组中(生成10个随机字母)(letterpool),然后再次检查他们使用的单词是否从字典中有效

我有一本名为“dict.txt”的字典,里面有80k个小写单词 字典。我需要以某种方式接受输入(大写),并能够找到字典中小写的单词

我希望你们能帮助我,编程语言Java 提前谢谢


Eric

我会创建一个
HashMap
并将随机字母放入映射中

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;       
   }
我不确定你在使用哪一个字典类,所以我不能帮你

顺便说一句:
使用hashmaps的Arctigors解决方案的cpu性能更高,内存方面更重。(O(n)而不是O(n*lb(m))

请先自己试一试,然后回答一个具体问题。请在问题中添加代码。我们很乐意从这一点上帮助您。@TDG代码现在有问题了。非常感谢你,我已经被困了两个星期,没有了luck@JFMeier我查字典时遇到了麻烦。单词(有所有的单词)谢谢你,伙计。关于dictionary,它在不同的类上,但是我有一个字符串数组(publicstring[]words=null;),我需要将其继承到主类以验证dictionary中是否有一个单词
           if (validWord(input,letterPool))
           {
              System.out.println("Yes, the letters match");    
            }else {
              System.out.println("No");
           }