Java Dictionary Searcher

Estoy tratando de implementar un programa que tomará la 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.

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

Actualmente tengo 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);

    }
}

Sé que hay mejores formas de almacenar el diccionario (como un árbol de búsqueda binario o una tabla hash), pero no sé cómo implementarlos de todos modos.

stoy atascado en cómo implementar un método que verifique la cadena dividida para ver si cada segmento es una palabra en el diccionario.

Cualquier ayuda sería genial, gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta