Estoy tratando de implementar un programa que tomará una entrada de los usuarios, dividir esa cadena en tokens, y luego buscar en un diccionario las palabras en esa cadena. Mi objetivo para la cadena analizada es que cada token sea una palabra en inglés.Java Dictionary Searcher
Por ejemplo:
Input:
aman
Split Method:
a man
a m an
a m a n
am an
am a n
ama n
Desired Output:
a man
que actualmente tiene este código que hace todo hasta la parte de salida deseada:
import java.util.Scanner;
import java.io.*;
public class Words {
public static String[] dic = new String[80368];
public static void split(String head, String in) {
// head + " " + in is a segmentation
String segment = head + " " + in;
// count number of dictionary words
int count = 0;
Scanner phraseScan = new Scanner(segment);
while (phraseScan.hasNext()) {
String word = phraseScan.next();
for (int i=0; i<dic.length; i++) {
if (word.equalsIgnoreCase(dic[i])) count++;
}
}
System.out.println(segment + "\t" + count + " English words");
// recursive calls
for (int i=1; i<in.length(); i++) {
split(head+" "+in.substring(0,i), in.substring(i,in.length()));
}
}
public static void main (String[] args) throws IOException {
Scanner scan = new Scanner(System.in);
System.out.print("Enter a string: ");
String input = scan.next();
System.out.println();
Scanner filescan = new Scanner(new File("src:\\dictionary.txt"));
int wc = 0;
while (filescan.hasNext()) {
dic[wc] = filescan.nextLine();
wc++;
}
System.out.println(wc + " words stored");
split("", input);
}
}
Yo sé que hay mejores formas de almacenar el diccionario (tales como una árbol binario de búsqueda o una tabla hash), pero no sé cómo implementarlos de todos modos.
Estoy atascado en cómo implementar un método que verifique la cadena dividida para ver si cada segmento era una palabra en el diccionario.
Cualquier ayuda sería grande, Gracias
posible duplicado de la [palabra está en el diccionario o no] (http://stackoverflow.com/questions/5918838/word-is-in-dictionary -o-no) –
¿Cuál es la cadena de entrada más grande que espera? –
Puede ser de cualquier longitud, pero no espero que sea más largo que 20 caracteres probablemente ... diría 50 MAX – Brendan