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)