华为OJ——DNA序列

题目描述

一个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.*;
public class Main{
	public static void main(String[] args) {

		Scanner scan=new Scanner(System.in);
		String dna=scan.nextLine();
		int length=scan.nextInt();
		String maxStr="";//记录比例最高的字符串
		double maxRatio=0;//记录目前出现的最高比例
		
		for(int i=0;imaxRatio){
				maxStr=str;
				maxRatio=GiveRatio(str);
			}
		}
		System.out.println(maxStr);
		
	}
	//返回一个字符串的GC比例
	static double GiveRatio(String str)
	{
		double ratio=0;//这里要用double型,如果用int型,2/5的结果为0
		double count=0;//用double型,原因同上
		for(char ch:str.toCharArray()){
			if(ch=='G' || ch=='C')
				count++;
		}
		ratio=count/(double)str.length();
		return ratio;
	}
}




你可能感兴趣的:(#,华为OJ系列,#,Java笔试题汇总(华为OJ))