今天看了一些文章,然后也抄了一些kmp算法的代码,然后用来跟暴力匹配做了多次的较量,但明显的暴力匹配的用时比kmp的少,甚至有时少很多。难道是我的测试数据刚好测到了kmp算法的最坏情况??不应该吧!!有大佬看一下么?
- 暴力匹配
public class ForceMatch {
/**
* 暴力匹配子串
* @param superString
* @param sonString
* @return
*/
public int forceMatch(String superString, String sonString) {
char[] sus = superString.toCharArray(),
sos = sonString.toCharArray();
int i = 0, j = 0;
while (i<sus.length && j<sos.length) {
if(sus[i] == sos[j]) {
i++;
j++;
}else {
i = i - j + 1;
j = 0;
}
}
//匹配到 则返回子串的位置,否则返回-1
return j == sos.length ? i - j : -1;
}
}
- KMP算法
public class KMP {
private void getNext(int