这一题验证的示例有问题(已经提交反馈),顺便写一下python解法
查找两个字符串a,b中的最长公共子串
http://www.nowcoder.com/questionTerminal/181a1a71c7574266ad07f9739f791506
对于输入
abc dabddabcef
应该得到输出:
abc
而不是ab
下面是Python的一种解法(HJ75公共串计算 也可以用这个方法求解)
# 思路一:对短串前后同时夹逼(遍历),这样子只要找到第一个符合要求的这一轮循环就可以停止
while True:
try:
shorter, longer = sorted([input(), input()], key=len)
res_li = []
l = len(shorter)
# print(f'短:{shorter}', f'长:{longer}')
for i in range(l):
for j in range(l-1, -1, -1):
s = shorter[i:j+1]
if s in longer:
res_li.append(s)
break # 这里找到的是本轮循环的最长匹配串
print(max(res_li, key=len) if len(res_li) != 0 else '')
except EOFError:
break 

查看14道真题和解析
