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的GIL
Jan 12 Python
对python判断ip是否可达的实例详解
Jan 31 Python
Python button选取本地图片并显示的实例
Jun 13 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
Python实现语音识别和语音合成功能
Sep 20 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
Mar 02 Python
详细分析Python可变对象和不可变对象
Jul 09 Python
python 星号(*)的多种用途
Sep 21 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
Jan 15 Python
用Python制作音乐海报
Jan 26 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
PHP实现简单日历类编写
2020/08/28 PHP
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
python字典基本操作实例分析
2015/07/11 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Django之form组件自动校验数据实现
2020/01/14 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
《母鸡》教学反思
2014/02/25 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书