蓝桥OJ:3419小郑的蓝桥平衡串—>注意前缀和数组与字符数组下标对齐
代码如下:
#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10;//字符串长度不大
int prefix[N];//开一个前缀和数组
int main()
{
//选择1:由于计算机中字符数组从0开始,而设定prefix数组下标从1开始
//那么后续需要修改下标为(s[i-1]==‘L’?1:-1)
//string s;cin>>s;
//int n=s.length();
//选择2:与选择1同理
//strlen针对char类型 后续同样要修改下标为(s[i-1]==‘L’?1:-1)
//char s[N];cin>>s;
//int n=strlen(s);
//选择3 从字符数组的第一位开始输入 计算大小时也从第一个位置开始 第0位默认为空
//那么最后s数组和prefix数组下标都为1,不需要修改下标(s[i-1]==‘L’?1:-1)
char s[N];cin>>s;
int n=strlen(s);
//对于整个字符数组 设定prefix前缀和数组 设定时做判断 如果该字符是L设为1 否则-1
for(int i=1;i<=n;++i)
prefix[i]=prefix[i-1]+(s[i-1]==‘L’?1:-1);
int answer=0;
//枚举区间 对于各个区间都进行判断
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
//根据前缀和定义判断出某段区间和为0 说明该段符合题意
//每个区间都会判断 将最终的最大值赋值给answer
if(prefix[j]-prefix[i-1]==0)
answer=max(answer,j-i+1);
}
}
cout<<answer;
return 0;
}
原文地址:https://blog.csdn.net/Nocomplaints/article/details/137610511
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!