先确定L长度的字符串,长度为n的子串一共(L-n+1)个,定义一个函数计算每个子串C和G的百分比(也可以不计算百分比,直接返回CG的个数),记录下CG-ratio最高时对应的子字符串,打印出来。
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String str = sc.next(); int n = Integer.parseInt(sc.next()); float max =0; //子字符串个数 int l = str.length()-n+1; String[] s = new String[l]; String str1 = "1"; for(int i=0; i<l; i++){ s[i] = str.substring(i,i+n); float b = cg_ratio(n,s[i]); if(b>max){ max = b; str1 = s[i]; } } System.out.println(str1); } } public static float cg_ratio(int n, String s){ float cg = 0; for(char ch:s.toCharArray()){ if(ch=='C') cg++; if(ch=='G') cg++; else cg += 0; } return cg/n; } }