问题:

给定一个字符串,寻找其中最长的重复子序列,如果字符串是单个字符组成的话如“aaaaaaaaaaaaa”那么满足要求的输出就是a

思路:

这里的思路有两种是我能想到的

(1)从头开始遍历字符串,设置标志位,在往后走的过程中当发现和之前标志位重合的时候就回头检查一下这个新出现的子串是否跟前面字符串或者前面字符串的子串相同,相同则记录该子串并计数加1,直至处理完毕

(2)利用滑窗切片的机制,生成所有的切片接下来统计和处理,主要利用到了两次排序的功能

本文采用的是第二种方法,下面是具体实现:

#!usr/bin/env python
#encoding:utf-8'''
__Author__:沂水寒城
功能:给定一个字符串,寻找最长重复子串
'''from collections import Counterdef slice_window(one_str,w=1):'''滑窗函数'''res_list=[]for i in range(0,len(one_str)-w+1):res_list.append(one_str[i:i+w])return res_listdef main_func(one_str):'''主函数'''all_sub=[]for i in range(1,len(one_str)):all_sub+=slice_window(one_str,i)res_dict={}#print Counter(all_sub)threshold=Counter(all_sub).most_common(1)[0][1]slice_w=Counter(all_sub).most_common(1)[0][0]for one in all_sub:if one in res_dict:res_dict[one]+=1else:res_dict[one]=1sorted_list=sorted(res_dict.items(), key=lambda e:e[1], reverse=True)tmp_list=[one for one in sorted_list if one[1]>=threshold]tmp_list.sort(lambda x,y:cmp(len(x[0]),len(y[0])),reverse=True)#print tmp_listprint tmp_list[0][0]if __name__ == '__main__':one_str='abcabcd'two_str='abcabcabd'three_str='bbbbbbb'main_func(one_str)main_func(two_str)main_func(three_str)

结果如下:

abc
ab
b
[Finished in 0.3s]

python实现给定一个字符串,寻找最长非重复子串相关推荐

  1. python查找最长的字符串_Python简单实现查找一个字符串中最长不重复子串的方法...

    本文实例讲述了Python简单实现查找一个字符串中最长不重复子串的方法.分享给大家供大家参考,具体如下: 刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: #!usr/bin/env pyth ...

  2. python找最长的字符串_Python简单实现查找一个字符串中最长不重复子串的方法

    本文实例讲述了Python简单实现查找一个字符串中最长不重复子串的方法.分享给大家供大家参考,具体如下: 刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: #!usr/bin/env pyth ...

  3. 最长不重复字符串python_Python简单实现查找一个字符串中最长不重复子串的方法...

    本文实例讲述了Python简单实现查找一个字符串中最长不重复子串的方法.,具体如下: 刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: #!usr/bin/env python #encodi ...

  4. c与指针 从一个字符串中提取子串_python实现找出来一个字符串中最长不重复子串...

    刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: #!usr/bin/env python#encoding:utf-8 '''__Author__:沂水寒城功能:找出来一个字符串中最长不重复 ...

  5. 【算法题】求一个字符串的最长不重复子串

    [题目描述] 求一个字符串的最长不重复子串.比如:给定"abcabcbb"的答案是"abc",长度是3:给定"bbbbb"的答案是" ...

  6. 最长不重复子串python_寻找最长不重复子串

    寻找最长不重复子串 Longest Substring Without Repeating Characters Given a string, find the length of the long ...

  7. 怎么判断一个字符串的最长回文子串是否在头尾_每日一道算法题,让你的头脑更活跃(寻找最长回文子串)...

    前言 最近准备把算法慢慢的捡起来,所以准备日更一道算法题目,难度自然是由简入难,所以同学们可以每天都来看看小编的更新. 日更时间定在每晚20:00,希望大家多多关注啦. 昨天就欠更了,简直就是打脸.过 ...

  8. 怎么判断一个字符串的最长回文子串是否在头尾_最长回文字串/子序列问题(leetcode5,9,519)

    leetcode 5 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: " ...

  9. 怎么判断一个字符串的最长回文子串是否在头尾_LeetCode 第 131 号问题:分割回文串...

    题目来源于 LeetCode 上第 131 号问题:分割回文串.题目难度为 Medium,目前通过率为 45.8% . 题目描述 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返 ...

  10. 怎么判断一个字符串的最长回文子串是否在头尾_LeetCode 5 迅速判断回文串的Manacher算法...

    本文始发于个人公众号: TechFlow 题意 Given a string s, find the longest palindromic substring in s. You may assum ...

最新文章

  1. R语言ggplot2可视化:使用ggrepel包在线图(line plot)的尾端那个数据点添加文本标签(text label)
  2. 高斯模糊与高反差保留
  3. matlab处理图片建系,求MATLAB处理一张图片,把图片放入坐标系,建立类似于经纬度的网格...
  4. spring-wind 搭建过程问题记录
  5. autocad型源代码_C# 实现预览dwg文件完整源代码(无需autocad环境)
  6. Java 第四次作业
  7. 通过SOAPHeader增强WebService的安全性
  8. 并查集(ACWING三道题)
  9. Batch Normalization(BN层)详解
  10. 系统配置 计算机管理,计算机系统安全配置管理方案
  11. 五子棋项目结束总结_UML五子棋设计总结.doc
  12. 生物化学 核磁共振 氢谱 n+1定律 邻碳耦合 同碳耦合
  13. R语言 cor与lm
  14. Chatty登录测试
  15. html5跟随手指的小球,Android自定义圆形View实现小球跟随手指移动效果(详细介绍)...
  16. 2022年最火副业;海外抖音 (TikTok) 搬运视频,一周赚一个月工资。
  17. jquery实现标签锚定(定位)
  18. CentOS下安装man手册
  19. 公式宝典之颜色混合模式公式
  20. 《大数据时代》读书报告

热门文章

  1. RHEL7.X安装12.2RAC时root.sh错误CLSRSC-400的解决方案
  2. i.MX6 设备树 GPIO 默认值
  3. mac pro制作iso系统光盘
  4. OSGI的实现——Felix
  5. Oracle:grouping和rollup
  6. 编译HG255D的openwrt固件
  7. 安装Exchange2010的详细步骤
  8. 奇怪的Adobe dynamic link
  9. C语言的数据类型→字符型数据
  10. Grep命令学习笔记(转)