DNA序列 滑动窗口
DNA序列
https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
import java.util.*;
public class Main {
private static String maxGCRatio(String s,int n){
HashMap<Character,Integer> window = new HashMap<>();
int left = 0,right = 0;
int start = 0,ratio =Integer.MIN_VALUE;
while(right<s.length()){
char c = s.charAt(right);
right++;
window.put(c,window.getOrDefault(c,0)+1);
while(right-left>=n){
if(window.getOrDefault('G',0)+window.getOrDefault('C',0)>ratio){
ratio = window.getOrDefault('G',0)+window.getOrDefault('C',0);
start = left;
}
char d = s.charAt(left);
left++;
window.put(d,window.getOrDefault(d,0)-1);
}
}
return ratio==Integer.MIN_VALUE? "": s.substring(start,start+n);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int n = sc.nextInt();
System.out.println(maxGCRatio(s,n));
}
}
查看8道真题和解析