【发布时间】:2011-08-20 20:18:03
【问题描述】:
我正在尝试实现一个程序,该程序将接受用户输入,将该字符串拆分为标记,然后在字典中搜索该字符串中的单词。我对解析字符串的目标是让每个标记都是一个英文单词。
例如:
Input:
aman
Split Method:
a man
a m an
a m a n
am an
am a n
ama n
Desired Output:
a man
我目前有这段代码,它可以完成所有工作,直到所需的输出部分:
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);
}
}
我知道有更好的方法来存储字典(例如二叉搜索树或哈希表),但我不知道如何实现这些。
我被困在如何实现一种检查拆分字符串以查看每个段是否是字典中的单词的方法。
任何帮助都会很棒, 谢谢
【问题讨论】:
-
Word Is In Dictionary or Not 的可能重复项
-
你期望的最大输入字符串是多少?
-
它可以是任意长度,但我预计它可能不会超过 20 个字符......我会说 50 MAX
标签: java string hashtable binary-search