Python实现统计给定字符串中重复模式最高子串功能示例


Posted in Python onMay 16, 2018

本文实例讲述了Python实现统计给定字符串中重复模式最高子串功能。分享给大家供大家参考,具体如下:

给定一个字符串,如何得到其中重复模式最高的子字符串,我采用的方法是使用滑窗机制,对给定的字符串切分,窗口的大小从1增加到字符串长度减1,将所有的得到的切片统计结果,在这里不考虑单个字符的重复模式,好了,很简单看具体实现:

#!usr/binenv python
#encoding:utf-8
'''''
__Author__:沂水寒城
统计一个给定字符串中重复模式数量得到最高重复模式串
'''
def slice(num_str,w):
 '''''
 对输入的字符串滑窗切片返回结果列表
 '''
 result_list=[]
 for i in range(len(num_str)-w+1):
 result_list.append(num_str[i:i+w])
 return result_list
def get_repeat_num_seq(num_str):
 '''''
 统计重复模式串数量
 '''
 result_dict={}
 result_list=[]
 for i in range(2,len(num_str)):
 one_list=slice(num_str, i)
 result_list+=one_list
 for i in range(len(result_list)):
 if result_list[i] in result_dict:
  result_dict[result_list[i]]+=1
 else:
  result_dict[result_list[i]]=1
 sorted_result_dict=sorted(result_dict.items(), key=lambda e:e[1], reverse=True)
 return sorted_result_dict[0:10]
if __name__ == '__main__':
 num_list=get_repeat_num_seq('4513785645121214545454545457894')
 print num_list

结果如下:

[('45', 8), ('4545', 5), ('454', 5), ('545', 5), ('54', 5), ('5454', 4), ('454545', 4), ('45454', 4), ('54545', 4), ('545454', 3)]
[Finished in 0.5s]

结果列表中第一个即为所求,当然,基于此还可以继续改进有很多别的需求。

Python 相关文章推荐
python基础教程之自定义函数介绍
Aug 29 Python
python中利用Future对象回调别的函数示例代码
Sep 07 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
pycharm安装和首次使用教程
Aug 27 Python
对Python定时任务的启动和停止方法详解
Feb 19 Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 Python
python如何将两个txt文件内容合并
Oct 18 Python
Python udp网络程序实现发送、接收数据功能示例
Dec 09 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
python切割图片的示例
Nov 12 Python
pycharm 的Structure界面设置操作
Feb 05 Python
Python(Django)项目与Apache的管理交互的方法
May 16 #Python
Python检测网络延迟的代码
May 15 #Python
在windows下Python打印彩色字体的方法
May 15 #Python
一条命令解决mac版本python IDLE不能输入中文问题
May 15 #Python
Python切片索引用法示例
May 15 #Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 #Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 #Python
You might like
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
javascript options属性集合操作代码
2009/12/28 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
简单了解JavaScript sort方法
2019/11/25 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
从零学Python之引用和类属性的初步理解
2014/05/15 Python
python列表操作之extend和append的区别实例分析
2015/07/28 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
python实现聊天小程序
2018/03/13 Python
django加载本地html的方法
2018/05/27 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
Python的logging模块基本用法
2020/12/24 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
经典c++面试题五
2014/12/17 面试题
Linux的主要特性
2016/09/03 面试题
大学三年的自我评价
2013/12/25 职场文书
简单的项目建议书模板
2014/03/12 职场文书
残疾人小组计划书
2014/04/27 职场文书
2014年小学教研工作总结
2014/12/06 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
杨善洲电影观后感
2015/06/04 职场文书