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 相关文章推荐
python基础while循环及if判断的实例讲解
Aug 25 Python
Python字典,函数,全局变量代码解析
Dec 18 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
python三方库之requests的快速上手
Mar 04 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
libreoffice python 操作word及excel文档的方法
Jul 04 Python
django中forms组件的使用与注意
Jul 08 Python
Python中print函数简单使用总结
Aug 05 Python
Django自关联实现多级联动查询实例
May 19 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 Python
在 Python 中利用 Pool 进行多线程
Apr 24 Python
Python 装饰器(decorator)常用的创建方式及解析
Apr 24 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学习之 循环结构实现代码
2011/06/09 PHP
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
Python数据类型学习笔记
2016/01/13 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
python实现感知机模型的示例
2020/09/30 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
亚历山大·王官网:Alexander Wang
2017/06/23 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
承认错误的检讨书
2014/01/30 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
公司管理建议书范文
2014/03/12 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
ubuntu安装jupyter并设置远程访问的实现
2022/03/31 Python