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 相关文章推荐
Python3.0与2.X版本的区别实例分析
Aug 25 Python
Python 爬虫模拟登陆知乎
Sep 23 Python
python 根据正则表达式提取指定的内容实例详解
Dec 04 Python
python读取与写入csv格式文件的示例代码
Dec 16 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
python批量识别图片指定区域文字内容
Apr 30 Python
Python统计分析模块statistics用法示例
Sep 06 Python
python输入错误后删除的方法
Oct 12 Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 Python
基于Python的图像阈值化分割(迭代法)
Nov 20 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 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 面向对象 final类与final方法
2010/05/05 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
js中实例与对象的区别讲解
2019/01/21 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
Python实现的一个简单LRU cache
2014/09/26 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
python读取Excel表格文件的方法
2019/09/02 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
广播体操口号
2014/06/18 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
2019年教师入党申请书
2019/06/27 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android
Python面试不修改数组找出重复的数字
2022/05/20 Python