关于环的处理
前后接一段同样的串免于在环中转圈
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,t1,t2,len1,len2,max_len;
bool f1,f2;
char a[1200],s1,s2;
int main()
{
scanf("%d",&n);getchar();
scanf("%s",a+1);
for(int i=n+1;i<=2*n;i++)
a[i]=a[i-n];
for(int i=2*n+1;i<=3*n;i++)
a[i]=a[i-2*n];
for(int i=n+1;i<=2*n;i++)
{
t1=i;t2=i-1;
s1=a[t1];s2=a[t2];
f1=true;f2=true;
len1=1;len2=1;
while(f1)
{
t1++;
if(t1==3*n) break;
if(s1=='w')
{
s1=a[t1];len1++;
}
else
{
if(s1==a[t1]) len1++;
else if(a[t1]=='w') len1++;
else f1=false;
}
}
while(f2)
{
t2--;
if(t2==0) break;
if(s2=='w')
{
s2=a[t2];len2++;
}
else
{
if(s2==a[t2]) len2++;
else if(a[t2]=='w') len2++;
else f2=false;
}
}
max_len=max(max_len,len1+len2);
}
if(max_len>n) max_len=n;
printf("%d\n",max_len);
return 0;
}