题解 | #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); } }