问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用python实现,找出一个字符串中的重复字符子串和字符串数量

发布网友 发布时间:2022-04-23 16:38

我来回答

3个回答

懂视网 时间:2022-05-10 10:58

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

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

问题:

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

思路:

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

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

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

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


#!usr/bin/env python
#encoding:utf-8
'''''
__Author__:沂水寒城
功能:给定一个字符串,寻找最长重复子串
'''
from collections import Counter
def 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_list
def 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)


结果如下:


热心网友 时间:2022-05-10 08:06

代码如下:

【备注】:

1. 用str.split(',')只能分隔逗号一种;如果涉及到多重分隔的话就需要使用re.split(',|:')。

2. 原字符串以逗号分隔的,后面有一个或多个字符串,所以re.split(', | ')。

3. 执行re.split(r', | ', S)操作之后,列表中会产生大量的'',就需要将filter过滤掉。

4. 使用L.count(x) == 1 或者 L.count(x) > 1来保留重复项或,非重复项。

5. set(L)则是保留列表中的唯一项,再用list()将其转换为列表。

6. 使用', '.join(L),将列表拼接成我们想要的字符串。

热心网友 时间:2022-05-10 09:24

s = 'abcabcabc'

i = 'abc'
print i,s.count(i)追问前提是这个字符串不知道他的内容是什么,这个不行

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电视屏幕不亮但有声音是怎么回事 电视只出声音不出画面怎么调 每天做踩单车的运动能瘦腿吗? 踩单车能瘦腿吗 知道踩自行车能瘦腿吗 注意姿势才是关键 踩自行车可以瘦腿吗 踩单车的好处是什么?怎样进行瘦腿? Adobe AIR是什么?能做什么? adobeair是什么软件,可不可以卸载?? 15--18万之间的车 python正则表达式从字符串中提取子串 python 怎么取出字符串中的数字子串? python如何实现动态规划算法寻找最优匹配子串 用python怎么实现,找出一个字符串中的重复字符子串和字符串数量? python 怎么用正则表达式查找字符串 如何用Python找到字符串中重复的子串,以及重复次数 python语言,s = "abcd1234",find()函数可以在字符串中搜索子串... 木耳怎么做才好吃? 木耳的做法 木耳的做法有哪些? 大木耳怎么做好吃 酸辣爽口木耳的做法 木耳怎么做好吃 木耳怎么做好吃又简单 木耳的多种做法 泡肉木耳的做法大全 木耳要怎么做才好吃 木耳的作法 泡椒木耳的做法? 木耳怎么做好吃? python中如何取出字符串中最后一个特定字符后的字符串 python字典,如何查找值中包含指定字符串的键 大神!!求用python写一个程序,找出给定字符串s中按字母表顺序排列的最... python 从字符串中找出以$开头并以一个dict里面任意一个字符结尾的子串... python 查找字符串中是否包含指定非连续字符 s=python print('{0:3}'.format(s))什么意思? python取出字符串的子串匹配问题 云南昆明滇池好玩吗,云南滇池景点怎么样 大家帮忙介绍一下昆明滇池旅游景点 针织毛衣洗过就会变形,应该怎么洗才正确? 针织衫怎么洗才不会变形啊?如果已经变大了怎么办 有什么好玩的地方,昆明旅游必去景点,昆明旅游景点 针织衫洗变形了怎么复原 云南滇池区周边有什么景点值得推荐 为什么创维电视安装不了软件? 顾客担心夏季针织衫容易变形,销售员如何应对 酷开电视怎么不让安装第三方软件 针织衫洗变形了怎么办一次也没穿过 针织衫洗后变长变形,怎样复原? 昆明市有哪些旅游景点