2016-05-23 8 views
-1

私はこの問題に取り組むための最良の方法を見つけようとしています。配列に挿入されたユーザー入力を単語が辞書に入れているかどうかを確認するには

私は、ユーザーの入力(単語)を配列に入れて、使用しているすべての文字がchar配列にあるかどうかを確認しようとします。手紙)(letterpool)を入力し、使用した単語が辞書から有効かどうかを再度確認します。

「dict.txt」という辞書には、小文字の「 」という80k語が含まれています。私は何とか入力(大文字)を取って、小文字の辞書の単語を見つけることができる必要があります

私はあなたが私を助けることを願っています、プログラミング言語Java ありがとうございます!

エリック

+2

まず自分自身を試してから具体的な質問に戻ってください。 –

+0

あなたのコードをあなたの質問に加えてください。その点からお手伝いさせていただきます。 – TDG

+0

@TDGコードが問題になりました。どうもありがとうございました。何週間も何も動かなかったのです。 – Eric

答えて

0

私はHashMap<Character, Integer>を作成して、マップ内のランダムな文字を入れたいです。その後、値が0と1がある場合

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でないかどうかを確認したいんあなたの言葉はあなたのランダムな配列で使われていません。 validWord機能のために、あなたの言葉で使用されている文字を数えるように簡単に、より機能性を拡張することができます。この実装で

...

0

私は、ソートされた配列のためのバイナリ検索を使用することを示唆しています。これらの線に沿って何か:

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"); 
      } 

私はそれであなたを助けることができないので、私はあなたがそこに使用しているDictionaryクラスを確認していません。

Btw: arctigorsハッシュマップを使用した回答は、より多くのCPUのパフォーマンスが向上しています。 (O(n * lb(m))の代わりにO(n))

+0

ありがとう。辞書については、私は文字列配列(パブリックString [] words = null;)を持っている私は単語を辞書にある場合に検証するために、これをメインクラスに継承する必要がある – Eric

関連する問題