在实际工程中经常遇到这样的问题,在一起字符串里查找是否包含某个字符串,并且找到要找字符串所出现的位置。
让我们来举一个例子:
在上图中,字符串B是A的子串,B第一次在A中出现的位置下标是2(字符串的首位下标是0),所以返回 2。
字符串B在A中并不存在,所以返回 -1。
常见的算法包括:BF(Brute Force,暴力检索)、RK(Robin-Karp,哈希检索)、KMP(教科书上最常见算法)、BM(Boyer Moore)、Sunday。
1. BF(Brute Force,暴力检索)
2. RK(Robin-Karp,哈希检索)
3. KMP(Knuth-Morris-Pratt算法)
kmp算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现