while True:
try:
s1 = input()
s2 = input()
m = len(s1)
n = len(s2)
# 将短边设为行,纵向排列
if m > n:
s1, s2 = s2, s1
m, n = n, m
dp = [[0 for _ in range(n+1)] for _ in range(m+1)]
max_length = 0
mark = -1
# 最外层循环先遍历短边
for i in range(1, m+1):
for j in range(1, n+1):
if s1[i-1] == s2[j-1]:
dp[i][j] = dp[i-1][j-1] + 1
if dp[i][j] > max_length:
max_length = dp[i][j]
# 将当前最长公共子串在短边中的结束位置记录下来
mark = i
print(s1[mark-max_length: mark])
except:
break



京公网安备 11010502036488号