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