In a spell checker it is useful to check whether the given w

In a spell checker, it is useful to check whether the given word is one symbol away from a word in the dictionary. For a language L, define L\' to the set of all strings obtainable by altering at most one symbol in a string of L. For example, if L is {CAT, DOG}, then L\' is {AAT, BAT, CAT, . . . , ZAT, . . . , AOG, . . . , DOZ}. Show how to convert an FA for L into one for L\'.

Thanks in advance.

Solution

AlterOneLetter.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;

public class AlterOneLetter {
   public static void main(String args[]) throws IOException {

       BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
       HashSet<String> originalList = new HashSet<String>();

       System.out.println(\"++++++++++++++++++ Input some Strings (Press control + Z to finish) : +++++++++++++++++++\");
       String word = reader.readLine();
       while (word != null) {
           if(!word.isEmpty()) {
               originalList.add(word.toUpperCase());          
           }
           word = reader.readLine();  
       }
      
       LinkedHashSet<String> resultantList = new LinkedHashSet<String>();
       Iterator<String> originalListIterator = originalList.iterator();
      
       System.out.println(\"\ ++++++++++++++++++ Printing the Input list (L): +++++++++++++++++++\");
       while(originalListIterator.hasNext()) {
           System.out.println(originalListIterator.next());          
       }
      
       // reinitialize original list iterator
       originalListIterator = originalList.iterator();
       while(originalListIterator.hasNext()) {
           // get the current input string
           String str = originalListIterator.next();
          
           // one by one replace all the characters of original String
           // i is the index of current character of string, to which we
           // want to replace
           for(int i=0; i<str.length(); i++) {
              
               // Change current character from A-Z one by one and
               // put in resultant list
               for(char c=\'A\'; c<=\'Z\'; c++) {
                   resultantList.add(returnAfterReplacement(str, i, c));
               }
           }
       }
      
      
       System.out.println(\"\ ++++++++++++++++++ Printing the resultant list (L`): +++++++++++++++++++\");
       Iterator<String> iterator = resultantList.iterator();
       while(iterator.hasNext()) {
           System.out.println(iterator.next());          
       }
   }
  
   public static String returnAfterReplacement(String str, int index, char c) {
       StringBuilder stringBuilder = new StringBuilder(str);
       stringBuilder.setCharAt(index, c);

       return stringBuilder.toString();
   }

}

In a spell checker, it is useful to check whether the given word is one symbol away from a word in the dictionary. For a language L, define L\' to the set of al
In a spell checker, it is useful to check whether the given word is one symbol away from a word in the dictionary. For a language L, define L\' to the set of al

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site