这一题验证的示例有问题(已经提交反馈),顺便写一下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