题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
while 1:
try:
a = input()
b = input()
dic = {}
y = []
for i in range(len(a)):
for j in range(i+1,len(a)):
if a[i: j+1] in b:
dic[a[i:j+1]] = len(a[i:j+1])
for i in dic:
if dic[i] == max(dic.values()):
y.append(i)
#以下为了解决相同长度字符串出现相同长度长度字串的问题
if len(y) == 1:
print(y[0])
else:
if len(a)>len(b):
for i in range(len(b)):
if b[i:i+len(y[0])] in y:
print(b[i:i+len(y[0])])
break
elif len(a)<len(b):
for i in range(len(a)):
if a[i:i+len(y[0])] in y:
print(a[i:i+len(y[0])])
break
else:
for i in range(len(a)):
if a[i:i+len(y[0])] in y:
m =i
ym = a[i:i+len(y[0])]
break
for i in range(len(b)):
if b[i:i+len(y[0])] in y:
n =i
yn = b[i:i + len(y[0])]
break
if m>n:
print(yn)
elif m<n:
print(ym)
except:
break
查看11道真题和解析
