Kullanıcı girişi alacağı, bu dizeyi belirteçlere bölen ve daha sonra söz dizisindeki sözcükler için bir sözlük arayacak bir program uygulamaya çalışıyorum. Ayrıştırılmış dizge için hedefim, her bir jetonun İngilizce bir kelime olması. Örnek içinJava Sözlük Arayıcı
:
Input:
aman
Split Method:
a man
a m an
a m a n
am an
am a n
ama n
Desired Output:
a man
Şu anda istenen çıkış parçası kadar her şeyi yapar bu kodu vardır: Böyle bir şekilde sözlüğü (depolamak için daha iyi yollar var biliyorum
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);
}
}
ikili arama ağacı veya bir karma tablosu), ancak bunları nasıl uygulayacağımı bilmiyorum.
Her segmentin sözlükte bir sözcük olup olmadığını görmek için bölünmüş dizeyi kontrol eden bir yöntemin nasıl uygulanacağına takılıyorum.
Herhangi bir yardım çok iyi olurdu, cevabım aptalca görünüyor Eğer gerçekten yakın ve ben Zorlandığınız olduğun yerde emin değilim, çünkü bu kadar size
olası yinelenen [Word'de Sözlüğü mı yoksa değil] (http://stackoverflow.com/questions/5918838/word-is-in-dictionary -veya değil) –
Beklediğiniz en büyük giriş dizesi hangisi? –
Her hangi bir uzunlukta olabilir, ama muhtemelen 20 karakterden daha uzun olmasını beklemiyorum muhtemelen 50 MAX – Brendan