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;
}
}
}
}
主要是边界的处理,没啥难度

京公网安备 11010502036488号