之前写过一篇文章是:python获取指定字符串中重复模式最高的字符串

在这里的方法很简单无非就是一个滑窗,重叠的滑动,将字符串所有的可能都找到,然后统计一下即可,现在我要的是前向匹配最大长度的同时重复模式最多的子字符串,这样的话就需要加一层统计处理了,不过做法也很好理解,具体实现如下:

#!usr/bin/env python
#encoding:utf-8'''
__Author__:沂水寒城
功能:找到给定字符串中的最大重复模式
'''def slice_window(str_list,n):'''滑窗切片操作'''result_list=[]for i in range(0,len(str_list)-n+1,n):result_list.append('/'.join(str_list[i:i+n]))return result_listdef find_repeat_pattern(str_list):result_list=[]result_dict={}for i in range(2,len(str_list)):result_list+=slice_window(str_list,i)for one in result_list:if one in result_dict:result_dict[one]+=1else:result_dict[one]=1# return sorted(result_dict.items(), key=lambda e:e[1], reverse=True)[0]return result_dictdef find_real_pattern(result_dict):new_result_dict={}keys_list=result_dict.keys()for i in range(len(keys_list)):first=keys_list[i]for j in range(len(keys_list)):second=keys_list[j]if first in second and first!=second and result_dict[first]>1 and result_dict[second]>1:new_result_dict[keys_list[j]]=result_dict[keys_list[j]]return new_result_dictif __name__ == '__main__':str_list=['1','2','3','4','5','6','7','8','4','3','4','3','4','3','4','3','4','3']result_list=slice_window(str_list,2)print result_listresult_dict=find_repeat_pattern(str_list)print result_dictprint find_real_pattern(result_dict)

结果如下:

['1/2', '3/4', '5/6', '7/8', '4/3', '4/3', '4/3', '4/3', '4/3']
{'1/2/3': 1, '1/2/3/4/5/6/7/8/4/3/4/3/4/3': 1, '4/3/4/3/4/3': 1, '1/2/3/4/5/6/7/8/4/3/4/3': 1, '1/2/3/4/5/6/7/8/4': 1, '8/4/3/4/3/4/3': 1, '1/2/3/4/5': 1, '4/3/4/3/4': 1, '1/2/3/4': 1, '4/3/4/3': 2, '6/7/8/4/3': 1, '7/8/4/3/4/3': 1, '7/8/4': 1, '1/2/3/4/5/6/7/8/4/3': 1, '3/4/3/4/3/4/3/4/3': 1, '1/2/3/4/5/6/7/8/4/3/4/3/4': 1, '4/5/6': 1, '4/3/4': 1, '1/2': 1, '1/2/3/4/5/6/7/8/4/3/4/3/4/3/4': 1, '1/2/3/4/5/6/7/8/4/3/4/3/4/3/4/3/4': 1, '1/2/3/4/5/6/7/8/4/3/4/3/4/3/4/3': 1, '3/4': 1, '1/2/3/4/5/6/7/8/4/3/4': 1, '1/2/3/4/5/6/7': 1, '5/6': 1, '4/3': 5, '7/8': 1, '5/6/7/8': 1, '3/4/3': 2, '1/2/3/4/5/6/7/8': 1, '4/3/4/3/4/3/4/3': 1, '1/2/3/4/5/6': 1}
{'3/4/3': 2, '4/3/4/3': 2}
[Finished in 0.4s]

可以看到:

[4,3,4,3]即为我们所要的前向匹配过程中重复模式最高的子字符串了,如果想要只输出这一个,那么可以在输出前加一个比较,若值相等那么输出长度更大的字符串即可

python实现前向匹配中查找最大长度的最高重复模式的子字符串相关推荐

  1. c++获取数组长度查找算法_在C ++中查找数组长度

    c++获取数组长度查找算法 介绍 (Introduction) In this article, we are going to learn about the various ways follow ...

  2. python数组中查找某个值,Python实现在某个数组中查找一个值的算法示例

    如何在python列表中查找某个元素的索引 方法一: 利用数组自身的特性 a.index(target), 其中a是目标list,target是需要的下标对应的值.代码如下: 可知索引为2.但是如果a ...

  3. python3 列表长度_3种在Python中查找列表长度的简便方法

    python3 列表长度 In this article, we will be unveiling techniques to find the length of a Python list. F ...

  4. python ndarray find_在列表中查找numpy数组的索引(Find index of numpy array in list)

    在列表中查找numpy数组的索引(Find index of numpy array in list) 有人可以解释为什么发生以下情况? 我的用例是我有一个python列表,其元素都是numpy nd ...

  5. 用 Python 从 GFF3 格式文件中查找注释信息

    作者:SunCOOL ,写python的农学生. 什么是GFF3格式文件 GFF全称为general feature format,3表示是第三个版本,这种格式主要是用来注释基因组,由tab分割,共9 ...

  6. python中属性赋值查找_关于python:在dataframe列中查找字典的值并进行修改

    我现在处理DataFrames和Dictionaries,我有一个问题, 我有一个词典"水果" {BN:'Banana', LM:'Lemon', AP:'Apple' ..... ...

  7. python调用窗口找到文件,使用Python在Mac OS X中查找当前活动窗口

    Is there a way to find the application name of the current active window at a given time on Mac OS X ...

  8. LeetCode刷题(Python)——在排序数组中查找元素的第一个和最后一个位置

    题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值 ...

  9. linux查找修改时间在三天前,ECS linux 中查找最近一次修改过的文件的具体操作

    1.find dir/ -type f -mtime +1 -atime : 指定时间曾被存取过的文件,意思是文件被读取过 -ctime : 指定时间曾被更改过的文件,意思是文件权限被更改过 -mti ...

  10. python统计字符在文件中出现的次数_一文搞定统计字符串中某字符出现的频次

    下面是统计字符串中某字符出现的次数的方法 方法1: 这个方法相当简单,零基础自学编程,代码写成这样能满足需求,但它逐个逐个计数,比较笨拙.rlt = {} for i in content: if i ...

最新文章

  1. Android studio 编译器导入一个背景图片
  2. [论文笔记]CVPR2017_Joint Detection and Identification Feature Learning for Person Search
  3. 域名扫描linux,ksubdomain 无状态域名爆破工具
  4. iphone连不上微软服务器,windows没法连接到iphone是什么意思
  5. 7-1 Say Hello to Integers (5 分)
  6. 好的串行代码与好的并行代码的区别(Zz)
  7. 浅析iOSApp签名原理及流程
  8. (BISM)FTP搜索引擎BLOG开通了,专门交流搜索引擎技术
  9. Phase2 Day2 数组和链表
  10. 通过APKIDE 反编译文件得到.java文件方法
  11. 个人信息安全规范----7、个人信息安全事件处置
  12. Apache ECharts 官网布局排版错乱的解决办法
  13. 浅谈 Office 2013 App
  14. 根据出行月份(1~12)和仓位(头等舱1,经济舱2)输出实际机票价格。
  15. 数据备份技术知识梳理(建议收藏)
  16. 互联网快讯:极米投影仪获用户青睐;粉笔科技创新OMO模式谋突围;华虹半导体拟科创板上市
  17. 防火墙、WAF、IPS、IDS、堡垒机的区别
  18. python中用递归求和
  19. Windows10下Linux子系统Ubuntu使用教程(1)——安装
  20. 标志着中国进入世界研制巨型计算机,历史上的今天丨完成中国首台亿次计算机,他们只用5年!...

热门文章

  1. Linux使用 tar命令-g参数进行增量+差异备份、还原文件
  2. 呦乐乐_百科讲解大全
  3. Linux slab分配器【转】
  4. mysql,SQL标准,多表查询中内连接,外连接,自然连接等详解之查询结果集的笛卡尔积的演化...
  5. Web.py session用户认证
  6. 面试小题,传入6返回9,传入9返回6
  7. Win 2003安装过后的一些配置技巧
  8. Humidex--POJ 3299
  9. 安装虚拟环境和Flask
  10. Codeforces.100633J.Ceizenpok's formula(扩展Lucas)