类似滑动窗口的思路,统计每个窗口内的比值,记录下比值最大的窗口的起始位置。
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s, '\n');
int N = 0;
cin >> N;
int first = 0;
int last = first + N - 1;
int ratio = 0;
int flag = 0;
int size = 0;
while (last <= s.size() - 1) {
string temp = s.substr(first, N);
for (int i = 0; i < N; i++) {
if (temp[i] == 'G' || temp[i] == 'C') {
size++;
}
}
if (size > ratio) {
ratio = size;
flag = first;
}
first++;
last = first + N - 1;
size = 0;
}
string res = s.substr(flag, N);
cout << res << endl;
return 0;
}

京公网安备 11010502036488号