KMP算法介绍
- KMP是一个解决模式串在文本串是否出现过,如果出现过,最早出现的位置的经典算法
- Knuth- MorTis- Pratt字符串查找算法,简称为"KMP算法",常用于在一个文本串S内查找一个模式串P的出现位置,这个算法由 Donald Knuth、 Vaughan pratt、James H.Morris三人于1977年联合发表,故取这3人的姓氏命名此算法
- KMP方法算法就利用之前判断过信息,通过一个
next数组
,保存模式串中前后最长公共子序列的长度,每次回溯时,通过next数组找到,前面匹配过的位置,省去了大量的计算时间
KMP算法最佳应用字符串匹配问题
字符串匹配问题
- 有一个字符串st1=" BBC ABCDAB ABCDABCDABDE",和一个子串st2=" ABCDABD"
- 现在要判断str1是否含有st2,如果存在,就返回第一次出现的位置,如果没有,则返回-1
- 要求:使用KMP算法完成判断,不能使用简单的暴力匹配算法
思路分析图解
举例来说,有一个字符串str1=" BBC ABCDAB ABCDABCDABDE",判断,里面是否包含另一个字符串str2=" ABCDABD"?