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聊天室实现方法
Jun 28 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 Python
Python从零开始创建区块链
Mar 06 Python
python实现自动发送报警监控邮件
Jun 21 Python
python通过ffmgep从视频中抽帧的方法
Dec 05 Python
Python 获取ftp服务器文件时间的方法
Jul 02 Python
Django Rest framework三种分页方式详解
Jul 26 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
Python二元算术运算常用方法解析
Sep 15 Python
Python绘制数码晶体管日期
Feb 19 Python
利用python做数据拟合详情
Nov 17 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生成随机数或者字符串的代码
2008/09/05 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
ThinkPHP实现分页功能
2017/04/28 PHP
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
Js面试算法详解
2018/04/08 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
Python机器学习之决策树算法
2017/12/22 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
python3中for循环踩过的坑记录
2020/12/14 Python
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
C#基础面试题
2016/10/17 面试题
业务员简历自我评价
2014/03/06 职场文书
小学生优秀评语大全
2014/04/22 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
Python图像处理之图像拼接
2021/04/28 Python
Golang数据类型和相互转换
2022/04/12 Golang