题目描述
一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。
给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。
输入描述:
输入一个string型基因序列,和int型子串的长度
输出描述:
找出GC比例最高的子串,如果有多个输出第一个的子串
示例1
输入
AACTGTGCACGACCTGA
5
输出
GCACG
while True:
try:
string=input()
m=len(string)
n=int(input())
max=0
result=''
for i in range(m-n+1):#从0到m-n
num=string[i:i+n].count('G')+string[i:i+n].count('C')
if num>max:
max=num
result=string[i:i+n]
print(result)
except:
break
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
while(in.hasNext()){
String str=in.nextLine();
int len=in.nextInt();
int index=0;
int countGC=0;
for(int i=0;i<str.length()-len;i++){
int temp=0;//计算每个子串的GC数目
String substr=str.substring(i,i+len);
for(char c:substr.toCharArray()){//遍历看每个是否是G/C
if(c=='G'||c=='C')
temp+=1;
}
if(temp>countGC){
countGC=temp;
index=i;//获得出现次数最多的index,从而获得子串
}
}
System.out.println(str.substring(index,index+len));
}
}
}