题解 | #DNA序列#
DNA序列
https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
暴力解法:滑动窗口,依次遍历字符串,并记录CG比例最高的字串即可。
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { String str = in.next(); int len = in.nextInt(); //暴力解法:遍历 str 得到它的不同的长度为 len 的子串 //并记录这些字串的比例,最终输出比例最高,并且最靠前的子串即可。 int index1 = 0,index2 = 0,maxLen = 0; float maxRatio = 0; for(int i=0;i<str.length()-len+1;i++){ //注意此处的 i 的取值范围 int count = 0; //记录CG出现的次数 for(int j = i;j < i+len;j++){ if(str.charAt(j) == 'C' || str.charAt(j) == 'G') count++; } //将当前的最大的比例替换,并记录索引,由于需要比当前的比例大,所以相等的情况就不会记录下来了 if((float)count/len > maxRatio){ maxRatio = (float)count/len; index1 = i; index2 = i+len-1; } } System.out.println(str.substring(index1,index2 + 1)); } } }