python最长公共子串

【问题描述】
编写一个程序,对输入的字符串s和t,求其最长的公共子字符串。
【输入形式】
从屏幕分行读入串s和t。s和t由任意字符构成,长度都不超50个字符。输入数据确保只有唯一的最长公共子串。如果没有公共子串,打印No Answer

【输出形式】
在单独行上输出串s和串t的最长公共子串,在结尾输出一个回车符。

算法提示:用一个int型的计数器记录当前匹配长度,用一个字符数组记录当前匹配子串,如果存在更长子串,则进行相应替换。
【样例说明】
假设从屏幕输入以下内容:
aabcdababce
12abcabcdace
则输出内容为:
abcda

def maxstr(s,t):
    res = []
    for i in range(len(s)):
        for j in range(i+1,len(s)+1):
            if s[i:j] in t:
                res.append(s[i:j])
    if len(res)==0:
        return 'No Answer'
    res = sorted(res, key=lambda x:len(x))
    return res[-1]

if __name__=='__main__':
    
    s, t = input(), input()
    res = maxstr(s, t)
    print(res)

如有帮助,请点个采纳,谢谢!

def getmaxstr(str1,str2):
    lstr1=len(str1)
    lstr2=len(str2)
    record=[[0 for i in range(lstr2+1)] for j in range(lstr1+1)]
    maxNum=0
    p=0
    for i in range(lstr1):
        for j in range(lstr2):
            if str1[i]==str2[j]:
                record[i+1][j+1]=record[i][j]+1
                if record[i+1][j+1]>maxNum:
                    maxNum=record[i+1][j+1]
                    p=i+1
    return str1[p-maxNum:p]

if __name__=='__main__':
    str1=input()
    str2=input()
    res=getmaxstr(str1,str2)
    print(res)