题解 | #DNA序列#
DNA序列
http://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
滑动窗口,保证大小为n的滑动窗口向前滑动,若cG的数大于当前值,则更新答案
# include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
int n;
getline(cin, s);
scanf("%d", &n);
int len = s.length();
int count = 0,left=0, right=0, start=0;
if(n>len)
return 0;
unordered_map<char, int> window, need;
int ans = 0;
while(right<len)
{
char c = s[right];
window[c]++;
right++;
if(c == 'C'||c == 'G')
{
count++;
}
if(count>ans)
{
start = left;
ans = count;
}
while(right - left >=n)
{
char d = s[left];
left++;
if(d == 'C' || d == 'G')
{
count--;
}
window[d]--;
}
}
cout<<s.substr(start, n)<<endl;
return 0;
}

