KMP详解
Posted wolfbeyond
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KMP详解相关的知识,希望对你有一定的参考价值。
引入
字符串有一种基本的操作,叫做查找。当你在淘宝上搜索时,就是在查找;当你在百度上搜索时,也是在查找;当你在点子字典上输入一个英文单词的时候,也是在查找。
在C++的string库中有一个查找的函数,即str1.find(str2).其中,str1指的是被查找的母串,str2指的是要查找的子串。例如下面一段程序
string str1="Hello World"; string str2="Hel"; printf("%d", str1.find(str2));
这个程序的返回值是0.也就是说,str1.find(str2)返回的是str2在str1中第一次出现的位置。
注意事项
在开始之前,我们约定一下几个事项:
- 母串表示被查找的字符串,用strmo表示
- 子串表示要查找的字符串,用strch表示
- 我们用i来表示strmo中的第i个字符,用j来表示strch中的第j个字符,使读者更容易理解。
古老的字符串查找方法
暴力的字符串查找方法就是直接模拟人的思想,不断地在母串中一个字符一个字符地查看与子串是否匹配,直到匹配成功或母串结束为止。
以上是关于KMP详解的主要内容,如果未能解决你的问题,请参考以下文章