1.算法描述
字符串匹配,是指模式串是否为主串的子串。朴素的匹配算法是一种brute-force:从串的第一个字符开始匹配;当匹配失败时,主串S从第二个字符、模式串P继续从第一个字符开始匹配,…,直至匹配成功或比较到S串的最后一个字符。显然,这种算法的复杂度较高为O(m*n),且S串、P串的长度分别为m、n。
鉴于此,Knuth、Pratt和Morris提出了一种高效的匹配算法,复杂度仅为O(m+n)。利用到了模式串的字符信息与匹配失败的位置,以确定下一步比较的主串。先定义:
</
本文介绍了KMP算法,一种高效的字符串匹配算法,其时间复杂度为O(m+n)。文章详细阐述了算法描述,包括失配函数的概念,并提供了匹配规则。此外,还列举了参考文献,并提及了一个具体的应用实例——POJ 3461问题,该问题可能导致Runtime Error的问题。
字符串匹配,是指模式串是否为主串的子串。朴素的匹配算法是一种brute-force:从串的第一个字符开始匹配;当匹配失败时,主串S从第二个字符、模式串P继续从第一个字符开始匹配,…,直至匹配成功或比较到S串的最后一个字符。显然,这种算法的复杂度较高为O(m*n),且S串、P串的长度分别为m、n。
鉴于此,Knuth、Pratt和Morris提出了一种高效的匹配算法,复杂度仅为O(m+n)。利用到了模式串的字符信息与匹配失败的位置,以确定下一步比较的主串。先定义:
</
3608
5500

被折叠的 条评论
为什么被折叠?