題解 | #查找兩個(gè)字符串a(chǎn),b中的最長(zhǎng)公共子串#
查找兩個(gè)字符串a(chǎn),b中的最長(zhǎng)公共子串
http://www.fangfengwang8.cn/practice/181a1a71c7574266ad07f9739f791506
動(dòng)態(tài)規(guī)劃。
while True:
try:
s1, s2 = input(), input()
if len(s1) > len(s2):
s1, s2 = s2, s1
m, n = len(s1), len(s2)
dp = [0] * (n+1)
max_lens = 0
idx = 0
a, b = 0, 0
# print(m, n)
for i in range(1, m + 1):
for j in range(n, 0, -1):
if s1[i-1] == s2[j-1]:
dp[j] = dp[j-1] + 1
if dp[j] > max_lens:
max_lens = dp[j]
idx = j
else:
dp[j] = 0
print(s2[idx - max_lens : idx])
except:
break