Python实现统计给定字符串中重复模式最高子串功能示例
Python  /  管理员 发布于 7年前   131
本文实例讲述了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_listdef 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]
结果列表中第一个即为所求,当然,基于此还可以继续改进有很多别的需求。
PS:这里再为大家推荐2款非常方便的统计工具供大家参考使用:
在线字数统计工具:
http://tools..net.cn/code/zishutongji
在线字符统计与编辑工具:
http://tools..net.cn/code/char_tongji
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号