百练OJ:2678:基因检测

题目链接:

描述 用一个字符串表示一段基因,例如:“CTATGGGTTT”。两段基因的相似度定义为它们所包含的最大公共子串的长度。例如:“CCTTGG”和“TGGGC”的最大公共子串为“TGG”,它的长度为3,则我们称“CCTTGG”和“TGGGC”的相似度为3。现给定两段基因,要求计算它们的相似度。 输入 输入第一行包含一个正整数N(02 CCCCC TTTTTGGGGGCC ACTGGG DDD 样例输出
2
0
解题代码:
def getMax(str1,str2,minlen):
    t = 0
    a = minlen
    while a > -1:
        for i in range(minlen-a):
            substr2 = str2[i:i+a+1]
            # print(substr2)
            if substr2 in str1:
                t = a+1
                break
        if t > 0:
            break
        a -= 1
    return t

n = int(input())
for i in range(n):
    x = input()
    str1 = x.split()[0]
    str2 = x.split()[1]
    if len(str1) > len(str2):
        r = getMax(str1, str2, len(str2))
    else:
        r = getMax(str2, str1, len(str1))
    print(r)



你可能感兴趣的:(百练OJ与leetcode)