KMP算法(看毛片算法)

这里是KMP算法的原文:

我根据原文理解,修改为java版的….

“那么kmp算法比红黑树还要变态,香港服务器,很抱歉,每次打kmp的时候,香港服务器租用,输入法总是提示“看毛片”三个字,嘿嘿,就叫“看毛片算法”吧。”

我这边也是:

多的就不用说了,直接上代码:

* com.b510; * kmp算法 8 * 9 * @date 2012-12-1 <br /> hongten(hongtenzone@foxmail.com)11 * KMPAlgorithm { main(String[] args) {String[] zstr = { “a”, “b”, “a”, “b”, “c”, “a”, “b”, “a”, “b”, “a”, “b”, “d”, “c” };String[] mstr = { “b”, “a”, “b”, “d”, “c” };index = KMP(zstr, mstr);(index == -1) {24System.out.println(“没有匹配的字符串!”);25} else {26System.out.println(“哈哈,香港服务器租用,找到字符啦,位置为:” + index);27 }28 } KMP(String[] bigstr, String[] smallstr) {31int i = 0;32int j = 0;[] next = GetNextVal(smallstr);(i < bigstr.length && j < smallstr.length) {38if (j == -1 || bigstr[i] == smallstr[j]) {39i++;40j++;41} else {42j = next[j];43 }44 }(j == smallstr.length) {47return i – smallstr.length;48 }-1;51 }[] GetNextVal(String[] smallstr) {k = -1;j = 0;[] next = new int[smallstr.length];next[j] = -1;(j < smallstr.length – 1) {66if (k == -1 || smallstr[k] == smallstr[j]) {next[++j] = ++k;69} else {70// pk != pj 的情况:我们递推 k=next[k];k = next[k];73 }74 }75return next;76 }77 78 }做对的事情比把事情做对重要。

KMP算法(看毛片算法)

相关文章:

你感兴趣的文章:

标签云: