题解 | #公共子串计算#

公共子串计算

https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b

解题思路:用较短的那个字符串做递归,始终保持第一个字符串是较短的那个方便程序编写,如果第一较长则把两个字符串互换。
然后判断最短字符串是不是只有一个字符串,且包含在长字符串内,是的话则输出1
如果大于1,则进行递归:
让最大公共子串的首字母,是字符串a的每一个,a[i],让假设的公共子串的末尾从字符串a的末尾开始,逐渐向左位移,直到找到b的子串为止,这样就能得到首字母为a[i]的最大子串,赋值给res,如果下一个a[i]字符做首字母求的最大子串的长度大于当前的res长度,则将新的子串赋值给res。

a =raw_input()
b =raw_input()
if len(a)>len(b):
    a,b=b,a
if len(a) ==1 and a in b:
    print 1
res =''
for i in range(len(a)):
    j=len(a)
    while j>=i:
        if a[i:j] in b:
            if len(a[i:j])>len(res):
                 res = a[i:j]
            break
        j-=1
print len(res)  


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务