超级简单的理解kmp算法中的next的计算

来源:互联网 发布:淘宝微淘怎么发布盖楼 编辑:程序博客网 时间:2024/05/18 00:25

发现很多KMP算法的next求解兼职让人忧伤,图一大堆,全是没讲清楚.说白了,还是公式推导啊各种,你让咱们程序员怎么懂你啊?
1.普通求解字符串匹配 暴力破解
接下来愚公移山 来自http://www.cnblogs.com/yjiyjige/p/3263858.html
该算法很简单 按照顺序匹配 比如求abc(j) 是否在 bbabc(i)中,
1. 匹配 a != b (i=0)
2. 继续匹配 a != b (i=1)
3. a = a (i=2)
4. b = b (i=3)
5. c = c (i =4) ok!

public static int bf(String ts, String ps) {
char[] t = ts.toCharArray(); char[] p = ps.toCharArray();

int i = 0; // 主串的位置int j = 0; // 模式串的位置while (i < t.length && j < p.length) {   if (t[i] == p[j]) { // 当两个字符相同,就比较下一个       i++;       j++;   } else {       i = i - j + 1; // 一旦不匹配,i后退       j = 0; // j归0   }}if (j == p.length) {   return i - j;} else {   return -1;}

}

接下来来个简单的图 感谢刚才愚公移山的博主的图!

  1. (http://img.blog.csdn.net/20160525133248811 点击看大图
  2. 知道next如何求解 ,接下来对于KMP算法就非常简单啦
0 0
原创粉丝点击