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,只是个子母串不匹配的标志位。next

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

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

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

相关文章
相关标签/搜索