题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
while True:
try:
list_a, list_b = input(), input() # 存放两个字符串
if len(list_a) > len(list_b):
list_a, list_b = list_b, list_a # 保证a列表是短列表,b列表是长列表
len_1 = len(list_a) # 获取列表长度
len_2 = len(list_b) # 获取列表长度
rept = "" # 创建一个存放重复字符串的空字符串
for i in range(0, len_1): # 滑动窗口的起始序号,范围到短列表的长度即可
for j in range(i, len_1): # 滑动窗口的结束序号,从i开始,范围同样到短列表的长度即可
if list_a[i : j + 1] in list_b and j + 1 - i > len(rept): # 判断窗口里的字符串是否在长列表里,同时判断是否比当前重复字符串长
rept = list_a[i : j + 1] # 将窗口值赋值给rept
print(rept) # 打印rept
except:
break
参考了评论区大佬的作答,自己写了一遍,加了备注便于自己理解
#华为机试HJ65#
