类似滑动窗口的思路,统计每个窗口内的比值,记录下比值最大的窗口的起始位置。
#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; }