Python实现针对给定字符串寻找最长非重复子串

这篇文章主要介绍了python实现针对给定字符串寻找最长非重复子串的方法,涉及python针对字符串的遍历、排序、计算等相关操作技巧,需要的朋友可以参考下

本文实例讲述了Python实现针对给定字符串寻找最长非重复子串的方法。分享给大家供大家参考,具体如下:

问题:

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

思路:

立即学习“Python免费学习笔记(深入)”;

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

(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]+=1    else:      res_dict[one]=1  sorted_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_list  print tmp_list[0][0]if __name__ == '__main__':  print "脚本之家测试结果:"  one_str='abcabcd'  two_str='abcabcabd'  three_str='bbbbbbb'  main_func(one_str)  main_func(two_str)  main_func(three_str)

登录后复制

结果如下:

Python实现针对给定字符串寻找最长非重复子串

相关推荐:

Python实现按照指定要求逆序输出一个数字

python实现在IDLE中输入多行的方法

以上就是Python实现针对给定字符串寻找最长非重复子串的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2263573.html

(0)
上一篇 2025年2月27日 07:41:12
下一篇 2025年2月17日 23:12:27

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python 实现一行输入多个值

    下面为大家分享一篇python 实现一行输入多个值的方法,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧 python如何实现一行输入多个值呢? 例如 读入两个数10 23到a b  中。 很简单   a,b = input().s…

    2025年2月27日
    200
  • Python实现接受任意个数参数的函数

    下面为大家分享一篇python实现接受任意个数参数的函数方法,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧 这个功能倒也不是我多么急需的功能,只是恰好看到了,觉得或许以后会用的到。功能就是实现函数能够接受不同数目的参数。 其实,在…

    编程技术 2025年2月27日
    200
  • 深入分析python数据挖掘 Json结构分析

    这篇文章通过实例给大家分析总结了python数据挖掘以及json结构分析的相关知识点,对此有兴趣的朋友参考下。 json是一种轻量级的数据交换格式,也可以说是一种配置文件的格式 这种格式的文件是我们在数据处理经常会遇到的 立即学习“Pyth…

    2025年2月27日 编程技术
    200
  • Python编程中NotImplementedError的使用方法_python

    下面为大家分享一篇python编程中notimplementederror的使用方法,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧 Python编程中raise可以实现报出错误的功能,而报错的条件可以由程序员自己去定制。在面向对象…

    编程技术 2025年2月27日
    200
  • python 通过字符串调用对象属性或方法

    下面为大家分享一篇python 通过字符串调用对象属性或方法的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧 有时候需要将属性或方法作为参数传入,这个时候可以通过以下几种方式用字符串调用对象属性或方法 1、eval In …

    编程技术 2025年2月27日
    200
  • python装饰器-限制函数调用次数的方法(10s调用一次)

    下面为大家分享一篇python装饰器-限制函数调用次数的方法(10s调用一次),具有很好的参考价值,希望对大家有所帮助。一起过来看看吧 这是博主最近一家大公司的面试题,写一个装饰器,限制函数每10s调用一次。当时是笔试的,只写了大概的代码,…

    编程技术 2025年2月27日
    200
  • Python中的@classmethod

    下面为大家分享一篇对python中的@classmethod用法详解,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧 在Python面向对象编程中的类构建中,有时候会遇到@classmethod的用法。 总感觉有这种特殊性说明的用法…

    编程技术 2025年2月27日
    100
  • Python通过属性手段实现只允许调用一次的示例讲解_python

    下面为大家分享一篇python通过属性手段实现只允许调用一次的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧 如果希望一个对象的某个方法只能够调用一次,按照我之前的惯性思维,我肯定是定义一个状态量然后每次调用的时候修改它的…

    编程技术 2025年2月27日
    200
  • 使用Python和xlwt向Excel文件中写入中文

    下面为大家分享一篇使用python和xlwt向excel文件中写入中文的实例,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧 Python等工具确实是不错的工具,但是有时候不管是基础的Python还是Python的软件包都让我觉得对…

    2025年2月27日
    200
  • Python 3.7新功能之dataclass装饰器详解

    这篇文章主要给大家介绍了关于python 3.7新功能之dataclass装饰器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们一起学习学习吧。 前言 Python 3.7 将于今年夏天发…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论