next函数

Next函数讲解:

 

Next函数:指当子串与母串在子串第j个字符(母串第i个字符)时出现了不匹配。如果不让母串指针i回溯,只让子串指针j回溯,此时i指针指向的母串字符应该与子串中第next[j]个字符进行匹配。因此next[j]就是当子母串不匹配后,子串指针j会指向子串中第几个字符,而这里的第几个就是第j个。

下面分情况讲解:

当j=1时,即如果当j=1时字母就不匹配,此时指针j会指向子串中第几(next[j])个字符?我们知道前提是如果不匹配母串指针i是不变的还是指向不匹配的这个字符,因为子串的一个字符就不同所以从子串第i个字符开始的字符串指定与子串不匹配,又因为母串中第i个字符之前的字符都已经进行了匹配都不合格。所以子母串指针i与j都要往后移一位。子串中没有匹配的字符串所以记录该值为0,至于其他数行不行,我认为只要是非正数应该都可以,这里的0,只是个子母串不匹配的标志位。

当子串第j个字符与母串第i个字符不匹配时,就要分情况了。

如果子串除第j个字符外的前j-1个字符中,如果有以下这种情况,即子串前k-1个字符串与后k-1个字符串(后k-1个字符是到第j-1个字符而不是第j个字符)完全匹配则此时子串指针j就要回溯到子串中第k个字符与母串指针i指向的母串字符进行匹配判断。

如果子串前j-i个字符中不满足,则子串指针j回溯到第1(即next[j]=1)个字符与母串指针指向的母串字符进行匹配判断。

转载于:https://my.oschina.net/u/3782432/blog/1631986

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值