最大价值

题目 最大价值

image-1763f128

思路分析

对于P不用管 它价值为0 一定不是答案

只要找到A 去用指针j往该位置的右边挪 数出现几个p 记录在res里面

用max去维护res

j指的如果是P就做一遍res=max(res,j-i) 反正不是最大也不会被保存

如果指的是A 就直接break掉本次

如果是APPP的情况 右边全是P j就需要一个终止 即循环条件<n

代码实现

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'

const int N=110;
string str;
int T,n;

int main()
{
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>T;
    while(T--){
        cin>>n>>str;
        int res=0;
        for(int i=0;i<n;i++){
            if(str[i]=='A'){
                int j=i;
                do{
                    j++;
                    if(str[j]=='P')
                        res=max(res,j-i);
                    else
                        break;
                }while(j<n);
            }
        }
        cout<<res<<endl;
    }

    return 0;
}

同类题型

视频讲解


⬅️ 所有奇数长度子数组的和 🏠 00-刷题理模型 ➡️ 最长连续子序列