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中的类学习笔记
Sep 23 Python
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
Django中Model的使用方法教程
Mar 07 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
Python将一个Excel拆分为多个Excel
Nov 07 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
python替换字符串中的子串图文步骤
Jun 19 Python
用python中的matplotlib绘制方程图像代码
Nov 21 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
python模拟实现斗地主发牌
Jan 07 Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 Python
python解析json数据
Apr 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 include_path设置技巧分享
2011/07/03 PHP
Jquery 常用方法经典总结
2010/01/28 Javascript
jquery设置控件位置的方法
2013/08/21 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
基于Vue的侧边目录组件的实现
2020/02/05 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
python实现将文本转换成语音的方法
2015/05/28 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
浅谈python写入大量文件的问题
2018/11/09 Python
Python小进度条显示代码
2019/03/05 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
联想C++笔试题
2012/06/13 面试题
C#基础面试题
2016/10/17 面试题
生产主管岗位职责
2013/11/10 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
警校毕业生自我评价
2014/04/06 职场文书
片区教研活动总结
2014/07/02 职场文书
面试自我评价范文
2014/09/17 职场文书
幼师个人总结范文
2015/02/28 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
Go Plugins插件的实现方式
2021/08/07 Golang
Win11开始菜单添加休眠选项
2022/04/19 数码科技