题解 | #DNA序列#
DNA序列
https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string strs,maxStr;
int N;
getline(cin,strs);
cin >> N;
int length = strs.size();
if(length <= N) cout << strs << endl;
if(length > N)
{
maxStr.assign(strs.begin(),strs.begin()+N);
int maxGC = count(maxStr.begin(),maxStr.end(),'G') + count(maxStr.begin(),maxStr.end(),'C');
int GC_win = maxGC;
for(int i = N;i<length;i++)
{
if(strs[i-(N-1)-1] == 'G' || strs[i-(N-1)-1] == 'C')
{
GC_win--;
}
if(strs[i] == 'G' || strs[i] == 'C')
{
GC_win++;
}
if(GC_win > maxGC)
{
maxGC = GC_win;
maxStr.assign(strs,i-(N-1),N);
}
}
cout << maxStr << endl;
}
}
// 64 位输出请用 printf("%lld")
智元机器人成长空间 206人发布
