从短串开始索引,遇到相同字符的继续索引,直到遇到不同字符时进行判断,若长度大于此前的最大长度,则更新最大长度和公共子串,关键是把索引的下标重新返回到第一个相同的字符,继续找后续是否有相同的更长的子串。
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