import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str=in.nextLine(); int n=str.length(); int N=in.nextInt(); int k=0;//记录这N个字符里G和C的个数,GC-Ratio=k/N; float[]a=new float[n-N+1]; //a[i]代表以str[i]开头的长度为N的字符串的GC-Ratio String s=str.substring(0,N); for(char ch:s.toCharArray()){ if(ch=='G' || ch=='C') k++; } a[0]=(float)k/N; for(int i=1;i<=n-N;i++){ //新加入的字符是str.charAt(i+N-1),移除的字符是str.charAt(i-1); char ins=str.charAt(i+N-1); char out=str.charAt(i-1); if(ins=='G'||ins=='C')k++; if(out=='G'||out=='C')k--; a[i]=(float)k/N; } float r=0; for(int i=0;i<=n-N;i++){ r=Math.max(r,a[i]); } for(int i=0;i<=n-N;i++){ if(r==a[i]){ System.out.println(str.substring(i,i+N)); break; } } } }
主要是边界的处理,没啥难度