这个问题可以通过动态规划的方法来解决。我们可以将E看作1,F看作-1,然后找出子串的最大和,这就是我们需要的答案。
以下是C++代码:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
string s;
cin >> s;
int max_diff = 0, curr_diff = 0;
for (char c : s) {
curr_diff += (c == 'E' ? 1 : -1);
if (curr_diff < 0) {
curr_diff = 0;
}
max_diff = max(max_diff, curr_diff);
}
cout << max_diff << endl;
return 0;
}
这段代码首先读取输入,然后遍历字符串,根据字符是'E'还是'F'来更新当前的差值。如果当前的差值小于0,我们就将其重置为0。同时,我们保持一个最大差值,用来记录到目前为止找到的最大差值。最后,输出最大差值。