题解 | #DNA序列# 滑动窗口
DNA序列
https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
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.next();
int n = in.nextInt();
int cnt = 0;
// 第一个窗口 0~n-1
for(int j=0;j<n;j++) {
if(str.charAt(j) == 'C' || str.charAt(j) == 'G') {
cnt++;
}
}
int maxCnt = cnt;
String max = str.substring(0, n);
// 从1~n开始,直到最后
for(int i=n,j=1;i<str.length();i++,j++) {
//窗口划走的字符
char before = str.charAt(j-1);
// 窗口新增的字符
char after = str.charAt(i);
cnt -= (before=='C'||before=='G')?1:0;
cnt += (after=='C'||after=='G')?1:0;
if(cnt>maxCnt) {
cnt = maxCnt;
max = str.substring(j, i+1);
}
}
System.out.println(max);
}
}

查看7道真题和解析