我在java中发现了boyer-moore算法的这个实现。问题是它只显示第一次出现的索引。如何编辑此代码以使其输出所有匹配项?
public int BoyerMoore() {
// Preprocessing
computeLast();
computeMatch();
// Searching
int i = pattern.length() - 1;
int j = pattern.length() - 1;
while (i < text.length()) {
if (pattern.charAt(j) == text.charAt(i)) {
if (j == 0) {
System.out.println(i);
return i;
}
j--;
i--;
} else {
i += pattern.length() - j - 1 + Math.max(j - last[text.charAt(i)], match[j]);
j = pattern.length() - 1;
}
}
return -1;
}
我有使用arraylist或list的想法,但我对java集合没有深入的了解。
暂无答案!
目前还没有任何答案,快来回答吧!