字符串之KMP算法求解next数组(C语言)

Posted bfhonor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串之KMP算法求解next数组(C语言)相关的知识,希望对你有一定的参考价值。

一、求模式串google的next数组(手算练习)

  • next数组的作⽤:当模式串的第j个字符失配时,从模式串的第next[j]的继续往后匹配
  • 当第1个元素匹配失败时,next[1]=0任何模式串都一样,第一个字符不匹配时,只能匹配下一个子串,因此,next[1]都无脑写0
    在这里插入图片描述
  • 当第2个元素匹配失败时,next[2]=1任何模式串都一样,第2个字符不匹配时,应尝试匹配模式串的第1个字符,因此,next[2]都无脑写1
    在这里插入图片描述
  • 当第3个元素匹配失败时,此时j指向哪儿,next数组就是多少。在不匹配的位置前边,划一根美丽的分界线;模式串一步一步往后退,直到分界线之前“能够对上”,或模式串完全跨过分界线为止
    在这里插入图片描述
  • 当第4个元素匹配失败时,此时j指向哪儿,next数组就是多少。在不匹配的位置前边,划一根美丽的分界线;模式串一步一步往后退,直到分界线之前“能够对上”,或模式串完全跨过分界线为止
    在这里插入图片描述
  • 当第5个元素匹配失败时,此时j指向哪儿,next数组就是多少。在不匹配的位置前边,划一根美丽的分界线;模式串一步一步往后退,直到分界线之前“能够对上”,或模式串完全跨过分界线为止
    在这里插入图片描述
  • 当第6个元素匹配失败时,此时j指向哪儿,next数组就是多少。在不匹配的位置前边,划一根美丽的分界线;模式串一步一步往后退,直到分界线之前“能够对上”,或模式串完全跨过分界线为止
    在这里插入图片描述

二、使用next数组进行模式串google匹配

在这里插入图片描述

三、求模式串ababaa的next数组(手算练习)

在这里插入图片描述

四、KMP算法——求next数组

在这里插入图片描述

以上是关于字符串之KMP算法求解next数组(C语言)的主要内容,如果未能解决你的问题,请参考以下文章

KMP 算法

KMP 算法中 next 数组手工求解

经典算法——KMP,深入讲解next数组的求解

KMP算法模式匹配——手工求解next和nextval数组值

KMP算法模式匹配——手工求解next和nextval数组值

经典算法——KMP,深入讲解next数组的求解