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的常见命令注入威胁
Feb 18 Python
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
Python中操作符重载用法分析
Apr 29 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
python分治法求二维数组局部峰值方法
Apr 03 Python
在python 中实现运行多条shell命令
Jan 07 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
Aug 27 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
Python内置包对JSON文件数据进行编码和解码
Apr 12 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
php 图像函数大举例(非原创)
2009/06/20 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
php设计模式小结
2013/02/15 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
Python中%r和%s的详解及区别
2017/03/16 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
Python的多维空数组赋值方法
2018/04/13 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
《世界多美呀》教学反思
2014/03/02 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
学习雷锋标语
2014/06/25 职场文书
置业顾问岗位职责
2015/02/09 职场文书
2019思想汇报范文
2019/05/21 职场文书
Node.js实现断点续传
2021/06/23 Javascript
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python