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 02 Python
通过C++学习Python
Jan 20 Python
使用Python下的XSLT API进行web开发的简单教程
Apr 15 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
python将类似json的数据存储到MySQL中的实例
Jul 12 Python
在keras中获取某一层上的feature map实例
Jan 24 Python
最小二乘法及其python实现详解
Feb 24 Python
python实现控制台输出彩色字体
Apr 05 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
Python获取百度热搜的完整代码
Apr 07 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新手上路(十二)
2006/10/09 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
2014过年倒计时示例
2014/01/31 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
JavaScript之自定义类型
2012/05/04 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
JS继承用法实例分析
2015/02/05 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
js实现随机点名
2021/01/19 Javascript
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
Python中os.path用法分析
2015/01/15 Python
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
numpy中的高维数组转置实例
2018/04/17 Python
Python自定义一个异常类的方法
2019/06/27 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
基于python实现地址和经纬度转换
2020/05/19 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
医校毕业生自我鉴定
2014/01/25 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
情况说明书格式范文
2014/05/06 职场文书
2014年仓管员工作总结
2014/11/18 职场文书