经典滑动窗口法
窗口 = 子串
窗口的大小 = 子串的长度
窗口的GC-Ratio = 窗口内的GC基因数 / 窗口大小
窗口滑动一格后:窗口的GC基因数 = 前一个窗口的GC基因数 - 前一格丢失的GC基因数 + 新进一格获得基因数
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String geneSeq = in.nextLine();
        int subSeqLength = in.nextInt();
        int gcCount = 0;
        double[] gcRatio = new double[geneSeq.length()];
        for (int i = 0; i < subSeqLength; i++) {
            if (isGC(geneSeq.charAt(i))) {
                gcCount++;
            }
        }
        gcRatio[0] = gcCount / (1.0f * subSeqLength);
        double maxGCRatio = gcRatio[0];
        for (int i = 1; i < geneSeq.length() - subSeqLength + 1; i++) {
            gcCount = gcCount - (isGC(geneSeq.charAt(i - 1)) ? 1 : 0);
            gcCount = gcCount + (isGC(geneSeq.charAt(i + subSeqLength - 1)) ? 1 : 0);
            gcRatio[i] = gcCount / (1.0f * subSeqLength);
            maxGCRatio = Math.max(maxGCRatio, gcRatio[i]);
        }
        for (int i = 0; i < gcRatio.length; i++) {
            if (Math.abs(gcRatio[i] - maxGCRatio) < 1e-6) {
                System.out.println(geneSeq.substring(i, i + subSeqLength));
                break;
            }
        }

    }

    static boolean isGC(char c) {
        return c == 'G' || c == 'C';
    }
}