Java.DNA序列

链接:https://www.nowcoder.com/questionTerminal/e8480ed7501640709354db1cc4ffd42a?toCommentId=140458
来源:牛客网
 

一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。

给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。

 

 

输入描述:

 

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


 

输出描述:

 

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

示例1

输入

AACTGTGCACGACCTGA
5

输出

GCACG

【解题思路】
本题相当于遍历字符串,以每个下标为开始,进行提取子串。

然后相当于找最大值一样,依次打擂台。找到最大值的GC比例

import java.util.*;
public class practice30 {
    public static double GiveRatio(String str) {
        double ratio=0;
        double count=0;
        for(char ch : str.toCharArray()){
            if(ch=='G' || ch=='C')
                count++;
        }
        ratio = count/(double)str.length();
        return ratio;
    }
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        String dna=scan.nextLine();
        int usedSize=scan.nextInt();
        String maxStr="";
        double maxRatio=0;
        for(int i=0;imaxRatio) {
                maxStr=str;
                maxRatio=GiveRatio(str);
            }
        }
        System.out.println(maxStr);
    }
}

Java.DNA序列_第1张图片

你可能感兴趣的:(java)