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

发现很多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. (https://img-blog.csdn.net/20160525133248811 点击看大图
  2. 知道next如何求解 ,接下来对于KMP算法就非常简单啦
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值