题解 | #公共子串计算#

公共子串计算

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

#不仅打印最大的子字符串字数也打印那个值是多少,算是看了大佬的思路之后的拓展。 #另外大佬没有考虑完全不匹配的情况,我加了,如果flag为空就打印0,max函数似乎不能用做flag为空的情况。 代码如下

while True:
    try:
        a=str(input())
        b=str(input())
        flag=[]
        for i in range(len(a)):
            for j in range(i+1,len(a)+1):#通过i递增达到一个指针效果,并且越来越短,因为从i到j,因此j只是为1
                if b.count(a[i:j])!=0:#如果有就匹配上,count计数,相同就计数
                    flag.append(a[i:j])
        if flag!=[]:#max(flag)处理不了为空的情况
            c=[]
            for i in flag:
                c.append(len(i))#遍历,将长度放入数组
            print(max(c))#打印最大的那个长度
            print(flag[c.index(max(c))])#因为flag和c下标是一一对应的,所以通过index(max(c))找到那个数最大下标,因此可以打印最大的匹配字符串
        else:
            print(0)#所以单独写一个情况排除空的
全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-24 12:26
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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