输入描述:
输入一个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
。
解题思路:
- 我们想要得到
GC-ratio
最高的子串,根据GC-ratio
的定义。则可以理解为得到的子串中,G
和C
的数量最多。 - 双重循环遍历字符串,找出符合给定长度的子串,比较各个符合条件的子串,并获取
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)
码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~