一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。
给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。
输入 |
输入一个string型基因序列,和int型子串的长度 |
---|---|
输出 |
找出GC比例最高的字串 |
样例输入 | AACTGTGCACGACCTGA 5 |
样例输出 | GCACG |
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); String dna=scanner.next(); int n=scanner.nextInt(); System.out.println(count(dna,n)); scanner.close(); } public static String count(String dna,int n) { int len=dna.length(); float maxRatio=0.0f; String maxString=null; for(int i=0;i<len-n;i++) { String s=dna.substring(i,i+n); float r=ratio(s); if(r>maxRatio) { maxRatio=r; maxString=s; } } return maxString; } public static float ratio(String s) { int len=s.length(); int cnt=0; for(int i=0;i<len;i++) { char c=s.charAt(i); if(c=='G' || c=='C') cnt++; } return cnt*1.0f/len; } }