kmp算法
来源:互联网 发布:网站实时弹幕 源码 编辑:程序博客网 时间:2024/05/16 04:56
#created by sheng.chen at 2015.05.05 def next(str): retarr = [0] * len(str) retarr[0] = 0 retarr[1] = 0 for i in range(2,len(str)): if str[i-1] == str[retarr[i-1]]: retarr[i] = retarr[i-1] + 1 else: k = retarr[retarr[i-1]] while k > 0: if str[k] == str[i-1]: retarr[i] = k +1 break else: k -= 1 return retarr def find(source, target): nextarr = next(target) </span> i = 0 j = 0 while i < len(source): if source[i] == target[j]: i += 1 j += 1 else: if j == nextarr[j]: i += 1 j = nextarr[j] if j == len(target): break if j == len(target): return i - len(target) return -1 print find('dsfchencheenchenchenkjh', 'chenchen')
0 0
- KMP算法详解 【KMP】
- 【KMP】KMP算法模板
- KMP hihoCoder1015 KMP算法
- kmp算法
- KMP算法
- KMP算法
- KMP算法
- KMP算法
- KMP 算法
- kmp算法
- KMP算法
- kmp算法
- KMP算法
- KMP算法
- kmp算法
- kmp算法
- KMP算法
- KMP算法
- 设计模式(14)——Command(命令)
- lintcode:Number of Airplanes in the Sky
- Memcached源码分析(一)-建立守护进程
- 求数组中出现次数查过n/2的元素
- 时空思考(2)
- kmp算法
- [测试十年]搜狗测试第一年:主动学习篇
- 三列中间自适应排版 兼容ie6
- ZOJ 3869 Ace of Aces
- 表单验证常用正则
- PHP中include函数查找相对路径问题
- HDU 1846 Brave Game
- 吞吐量 带宽与数据传输率的区别
- 判断一个整数是否为回文数