从短串开始索引,遇到相同字符的继续索引,直到遇到不同字符时进行判断,若长度大于此前的最大长度,则更新最大长度和公共子串,关键是把索引的下标重新返回到第一个相同的字符,继续找后续是否有相同的更长的子串。
def str_length(str1,str2):
strlength = 0
lstr1 = len(str1)
lstr2 = len(str2)
for i in range(lstr1):
k = i
flag = 0
for j in range(lstr2):
if(k < len(str1)):
if(str1[k] == str2[j]):
k += 1
flag = 1
elif(flag == 1 and str1[k] != str2[j]):
if(k-i > strlength):
strlength = k - i
r1 = ''
for l in range(i,k):
r1 += str1[l]
k = i
flag = 0
elif(k == lstr1):
if(flag == 1):
if(k-i > strlength):
strlength = k - i
r1 = ''
for l in range(i,k):
r1 += str1[l]
break
else:
break
return r1
while True:
try:
str1 = str(input())
str2 = str(input())
if(len(str1) <= len(str2)):
res_str = str_length(str1,str2)
else:
res_str = str_length(str2,str1)
print(res_str)
except:
break


京公网安备 11010502036488号