获取两个字符串的最大公共子串

1.思路 先找到每个字符串的所有的子串,存放到集合中
2.两个集合求交集 intersection
3.然后找到交集中 最长的那个元素

第一步中是求字符串公共子集的方法
def son_str(s):
#s = ‘abcab’
list1 = list(set(s[i:j]
for i in range(len(s))
for j in range(i, len(s) + 1)))

print(list1)

return set(list1)

第二步骤
定义的两个集合,使用intersection 生成公共的集合就可以了
第三步:
对某个集合中找出长度最大的元素就可以了哦

找到两个字符串的公共最长子串

from basic.file.test42 import son_str

a=‘12asd’
b=‘1212as3’
set1=[]
#定义一个求字符串所有子串的方法存为集合的形式

def sonString(a):

for i in range(len(a)):

for j in range(len(a) - i):

tem=(a[j:j + i + 1])

set1.append(tem)

return (set(set1))

k=sonString(a)

print(‘k集合是:’,k)

h=sonString(b)

print(‘h集合是:’,h)

print(‘开始计算交集’)

k=son_str(a)
h=son_str(b)
z=list(k.intersection(h)) ## 公共最长的集合
print(z)
z1=[]
print(‘遍历公共集合’)
for i in z:
print(i,":",len(i))
z1.append(len(i))
maxCount=max(z1)
for i in z:
if len(i)==maxCount:
print(“出现最多的子串是”,i,‘长度是:’,maxCount)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金玉满堂@bj

朋友,你的打赏就是我创作的认可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值