4603. 最大价值 知识点:双指针

29 阅读1分钟

4603. 最大价值 - AcWing题库

举个例子:

a[i]'A'的时候就让j指向i的下一位,如果a[j]'P',那么就统计一下'P'的个数。

然后j继续向下走,直到j走到字符串结尾或者a[j]不等于'P'为止。此时把cnt求一下最大值。

image.png

#include<bits/stdc++.h>

using namespace std;

int main() {
    int t;
    cin >> t;
    
    while (t--) {
        int maxcnt = 0;  // 每一轮最大'P'个数都要清空
        int n; string s;
        cin >> n>>s;
        for (int i = 0; i < s.size(); i++)
        {
                if (s[i] == 'A') {
                    int j = i + 1, cnt = 0;  // 每个子序列都要重新统计'P'的个数
                    while (j< s.size() && s[j] == 'P')j++, cnt++;
                    
                    maxcnt = max(maxcnt, cnt);
                }
        }
        cout << maxcnt << endl;
    }
    return 0;
}