天天看点

63---DNA序列

输入描述:

输入一个string型基因序列,和int型子串的长度

输出描述:

找出​

​GC​

​比例最高的子串,如果有多个则输出第一个的子串

示例1

输入:

ACGT
2      

输出:

CG      

说明:

​​

​ACGT​

​​长度为​

​2​

​​的子串有​

​AC​

​​,​

​CG​

​​,​

​GT3​

​​个,其中​

​AC​

​​和​

​GT2​

​​个的​

​GC-Ratio​

​​都为​

​0.5​

​​,​

​CG​

​​为​

​1​

​​,故输出​

​CG​

示例2

输入:

AACTGTGCACGACCTGA
5      

输出:

GCACG      

说明:

虽然​​

​CGACC的GC-Ratio​

​​也是最高,但它是从左往右找到的​

​GC-Ratio​

​​最高的第​

​1​

​​个子串,所以只能输出​

​GCACG​

​。

  1. 我们想要得到​

    ​GC-ratio​

    ​​最高的子串,根据​

    ​GC-ratio​

    ​​的定义。则可以理解为得到的子串中,​

    ​G​

    ​​和​

    ​C​

    ​的数量最多。
  2. 双重循环遍历字符串,找出符合给定长度的子串,比较各个符合条件的子串,并获取​

    ​G​

    ​​和​

    ​C​

    ​数量最多的子串,将其添加到列表对象中。当然也可以使用字符串保存它
str1 = input()
num = int(input())

num_cg = 0
length = len(str1)
lst = [""]
# str2 = "" # 使用字符串保存最后的结果
for i in range(length):
    for j in range(i +1, length+1):
        if len(str1[i:j]) == num:
            cg_ratio = str1[i:j].count("C") + str1[i:j].count("G")
            if cg_ratio > num_cg:
                num_cg = cg_ratio
                lst[0] = str1[i:j]
#                 str2 = str1[i:j]
                
print(lst[0])
# print(str2)