有环的题可以两边接起来,这样会省事很多
#include<bits/stdc++.h>
using namespace std;
#define Max (int)(1e5+10)
char c[1200];
int main() {
int n,num=0,t=0,tt;
bool flag=0;
scanf("%d",&n);
for(int i=1; i<=n; i++) {
cin>>c[i];
c[n+i]=c[i];
c[2*n+i]=c[i];
}
char record;
for(int i=n+2; i<=2*n; i++) {
num=0;
int l=i-1,r=i;
record=c[l];
while(c[l]=='w'&&l>0)
num++,l--;
if(c[l]!='w'&&flag)
record=c[l];
while((c[l]=='w'||c[l]==record)&&l>0)
num++,l--;
record=c[r];
while(c[r]=='w'&&r<=3*n)
num++,r++;
if(c[r]!='w')
record=c[r];
while((c[r]=='w'||c[r]==record)&&r<=3*n)
num++,r++;
if(num>t)
{
t=num;
}
}
if(t>n) t=n;
printf("%d\n",t);
}
多谢瑞大师提点~
本文介绍了一种通过将输入字符串转化为环形结构来简化问题的方法,这种方法可以有效地解决字符串匹配问题,尤其是在需要考虑字符串首尾相连的情况。通过双指针技术进行滑动窗口匹配,能够找到最长的有效子串。
1022

被折叠的 条评论
为什么被折叠?



