У меня есть задание в Java, где я должен использовать Бойер Мур поиска подстроки решение Седжвик: http://algs4.cs.princeton.edu/53substring/BoyerMoore.java.htmlБойер-Моор счетные слова ява
Теперь остановится, когда первое вхождение слова обнаруживается и возвращает где он находится. Таким образом, чтобы подсчет количества слов я изменил метод поиска:
public String search(String txt) {
int M = pat.length();
int N = txt.length();
int count = 0;
int skip = 0;
int charCount = 0;
for (int i = 0; i <= N - M; i += skip) {
skip = 0;
for (int j = M-1; j >= 0; j--) {
if (pat.charAt(j) != txt.charAt(i+j)) {
skip = Math.max(1, j - right[txt.charAt(i+j)]);
break;
}
charCount++;
}
if (skip == 0)
{
count++;
skip++;
}
}
return "Aantal char: " + charCount + "\n" + count;
}
я изменил, если пропустить заявление, чтобы запустить счетчик «счетчик» и вернуть его в конце. Что происходит, если я кормлю его рисунок и текст вручную, кажется, считать штраф так:
картина: тест текст: «этот тест тест тест testtest» результат: 5
Однако Мне нужно прочитать в текстовом файле некоторого текста около 70k слов и поиск подстрок, что:
BufferedReader input = new BufferedReader(new FileReader(System.getProperty("user.home") + "/Desktop/opdr3tekst.txt"));
StringBuilder stringBuilder = new StringBuilder();
while(input.readLine() != null)
{
stringBuilder.append(input.readLine());
}
input.close();
BoyerMoore boyer = new BoyerMoore("pattern to search");
System.out.println(boyer.search(stringBuilder.toString()));
Так что, когда я искать слово, которое я всегда получить номер тот намного меньше, чем когда я CMD + F файл сам в текстовом редакторе. Любая идея, что происходит не так?
Прежде всего, спасибо за понимание! У меня теперь есть ((строка = input.readLine())! = Null) и строка добавления, теперь она действительно читает больше правильных работ, но все же есть небольшая разница между поиском текстового редактора и этим поиском, например, словом то есть 302 раза, найденных в текстовом редакторе, найдено 299 раз с java, любая идея о том, какая небольшая разница вызвана? – DaViDa
, пожалуйста, обновите свой пример выше, чтобы другие могли ответить на него, не читая это решение. – CoronA