63 DNA序列

题目描述
一个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));
            }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值