0

ハッシュ テーブルのことは気にしないで、文字列の管理方法を教えてください。

ハッシュテーブルを使用して、ユーザーが辞書に入力した単語のスペル チェックを行う必要があります。指定された単語が辞書に存在するかどうかを確認するために、ハッシュ テーブルから checkDictionary() という名前のメソッドを取得しました。単語が存在する場合はブール値を返し、存在しない場合は false を返します。

私がやりたいことは、スペルが間違っているときに辞書で単語をチェックして、可能な修正を加えたいということです。

可能な修正:

1 文字を変更する: たとえば、スペル ミスの単語が「kest」である場合、一度に 1 文字ずつ変更するあらゆる可能性を試して、変更された単語を辞書で調べます。可能性は、「aest」、「best」、...、「zest」、「kast」、...、「kzst」などです。

---一度に 1 つの文字を変更するにはどうすればよいですか。それも a から z に変更できます。

隣接する文字を交換する: たとえば、スペル ミスの単語が「ebst」の場合、「best」、「esbt」、および「ebts」を試します。

---隣接する文字を変更するにはどうすればよいですか?交換する必要がありますか?..

1 文字を削除する: たとえば、スペル ミスの単語が「tbird」の場合、一度に 1 文字ずつ削除する可能性をすべて試し、修正された単語を辞書で調べます。「bird」、「tird」、「tbrd」です。 」、および「tbir」。

---毎回文字を削除するにはどうすればよいですか?

入力した単語の長さは任意であることを覚えておいてください。

辞書で単語を確認した後、この提案をユーザーに返す必要があります。これらの関数を実装するために使用できる Strings のメソッドはありますか? 上記の方法の変更、交換、および削除の実装を手伝ってください。

     import java.util.*;
     import java .io.*;

     public class HashTableDemo
   {
     public static void main(String [] args)
  {

   // constructs a new empty hashtable with default initial capacity
     HashTable hashtable = new HashTable();
     Scanner keyboard = null;
     Scanner input=null;
     try
     {
        System.out.println("Enter a word to check in dictionary");
        keyboard = new Scanner(System.in);
        String word = (keyboard.nextLine().toUpperCase());

     //Adding aal dictionary words from a text file to hash table.
        input=new Scanner(new FileInputStream("TWL.txt"));
            int i=1;

            // adding value into hashtable
            while(input.hasNextLine())
             {
             String hello = input.nextLine();
                            hashtable.put( hello, new Integer(i) ); 
             i++;
             }
      );


        if(hashtable.checkDictionary(word))
           System.out.println("The word "+word+" is there in the dictionary.");
        else
           System.out.println("The word "+word+" is not there in the dictionary.");
     }//try



     //Here I need to implement the required methods if the word is not in dictionary and misspelled.





         catch(FileNotFoundException e)
        {
           System.out.println("Cannot open file");
           System.exit(0);
        }//end catch
4

1 に答える 1

2

あなたが達成しようとしていることに対する簡単な解決策はありません。スペル チェックに使用できる優れた数学的概念は、Edit Distanceと呼ばれます。コードを記述する前に、理論を少し読む必要があります。

于 2012-04-28T09:57:16.283 に答える