leetcode-28 实现strStr()
&此题为 难题-实现strStr() 类型的典型 &
难度: 简单
暴力法:
比较简单
KMP算法
两个疑惑:
KMP中重要的数据结构:
为什么不需要比较前面的位置?
反证法可以证明: 没有必要!
当我们知道两个绿色的方块,就是最大的公共前缀和后缀时,就可以放心地进行跳跃操作,而不需要担心我们会担心完全匹配的情况发生.因为完美匹配不可能在跳跃的空间内发生
如何求出needle字符串的最长公共前缀和后缀数组?
- 暴力法:
O(n的平方)
- 更高效的做法:
O(n)
实例:
needle = ADCADB
LPS = 000000
复杂度分析:
KMP的代码十分精妙~
原文作者: fliter
原文链接:
http://www.dashen.tech/2015/03/01/leetcode-28-实现strStr/版权声明: 转载请注明出处