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简单实现获取当前时间
Aug 27 Python
window下eclipse安装python插件教程
Apr 24 Python
利用aardio给python编写图形界面
Aug 21 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 Python
django 外键model的互相读取方法
Dec 15 Python
感知器基础原理及python实现过程详解
Sep 30 Python
如何基于python实现画不同品种的樱花树
Jan 03 Python
python 成功引入包但无法正常调用的解决
Mar 09 Python
python中添加模块导入路径的方法
Feb 03 Python
python字符串拼接.join()和拆分.split()详解
Nov 23 Python
浅析python中特殊文件和特殊函数
Feb 24 Python
基于Python编写一个监控CPU的应用系统
Jun 25 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
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
PHP4中实现动态代理
2006/10/09 PHP
在Windows版的PHP中使用ADO
2006/10/09 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
PHP7匿名类用法分析
2016/09/26 PHP
JS动画效果代码3
2008/04/03 Javascript
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
node 版本切换的实现
2020/02/02 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
python实现大文本文件分割
2019/07/22 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
pycharm安装及如何导入numpy
2020/04/03 Python
pip安装tensorflow的坑的解决
2020/04/19 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
铭立家具面试题
2012/12/06 面试题
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
投标授权委托书范文
2014/08/02 职场文书
大学生自荐材料范文
2014/12/30 职场文书
追悼会答谢词
2015/01/05 职场文书
离婚协议书样本
2015/01/26 职场文书
开除员工通知
2015/04/22 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技