题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
def f(m,b):#只要m不在b中间,就去掉开头第一个字符,接着判断后面的部分,直到m在b里面或者m为空 if m in b or m=='': return m elif m not in b: m=m.lstrip(m[0]) return f(m,b) def publicsub(a,b):#a是短的字符串 l=[] m=a[0] n=[]#储存公共子串的长度 for i in range(1,len(a)): m+=a[i] if m in b: l.append(m) n.append(len(m)) #i+=1 elif m not in b: m=f(m,b) d=l[n.index(max(n))] return d while 1: try: s1,s2=input(),input() l1,l2=len(s1),len(s2) if l1>=l2: print(publicsub(s2,s1)) elif l1<l2: print(publicsub(s1,s2)) #print(d) except:break