Python字符串匹配算法KMP实例


Posted in Python onJuly 18, 2015

本文实例讲述了Python字符串匹配算法KMP。分享给大家供大家参考。具体如下:

#!/usr/bin/env python
#encoding:utf8
def next(pattern):
p_len = len(pattern)
pos = [-1]*p_len
j = -1
for i in range(1, p_len):
while j > -1 and pattern[j+1] != pattern[i]:
j = pos[j]
if pattern[j+1] == pattern[i]:
j = j + 1
pos[i] = j
return pos
def kmp(ss, pattern):
pos = next(pattern)
ss_len = len(ss)
pattern_len = len(pattern)
j = -1
for i in range(ss_len):
while j > -1 and pattern[j+1] != ss[i]:
j = pos[j]
if pattern[j+1] == ss[i]:
j = j + 1
if j == pattern_len-1:
print 'matched @: %s' % str(i-pattern_len+1)
j = pos[j]
kmp(u'上海自来水来自海上海', u'上海')

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Flask SQLAlchemy一对一,一对多的使用方法实践
Feb 10 Python
python实现2014火车票查询代码分享
Jan 10 Python
跟老齐学Python之有容乃大的list(3)
Sep 15 Python
浅谈python中set使用
Jun 30 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
Feb 16 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
python+selenium 脚本实现每天自动登记的思路详解
Mar 11 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
Python四款GUI图形界面库介绍
Jun 05 Python
Python通过正则表达式选取callback的方法
Jul 18 #Python
Django的URLconf中使用缺省视图参数的方法
Jul 18 #Python
Python的Django框架中URLconf相关的一些技巧整理
Jul 18 #Python
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 #Python
Django中传递参数到URLconf的视图函数中的方法
Jul 18 #Python
在Django的URLconf中使用命名组的方法
Jul 18 #Python
在Django的URLconf中使用多个视图前缀的方法
Jul 18 #Python
You might like
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
浅谈javascript中的作用域
2012/04/07 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
2014/01/06 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
常用的js方法合集
2017/03/10 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
python对url格式解析的方法
2015/05/13 Python
Python多层装饰器用法实例分析
2018/02/09 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
python 装饰器的使用示例
2020/10/10 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
2014年接待工作总结
2014/11/26 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
银行催款通知书
2015/04/17 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
观看建国大业观后感
2015/06/01 职场文书
火烧圆明园的观后感
2015/06/03 职场文书