1342. 断开的项链

首先破环成链。

之后枚举(n)处断裂的位置,对于每次断裂形成的一串项链,采用双指针分别统计左边颜色连续的珍珠串长度和右边颜色连续的珍珠串长度。

const int N=355;
char s[N<<1];
int n;

int main()
{
    cin>>n;
    scanf("%s",s);

    for(int i=n;i<n*2;i++) s[i]=s[i-n];

    int res=0;
    for(int i=0;i<n;i++)
    {
        int l=i,r=i+n-1;
        char color=s[l];
        int cnt=0;
        while(l <= r && (s[l] == color || s[l] =='w' || color == 'w'))
        {
            if(color == 'w' && s[l] != 'w')
                color=s[l];
            cnt++;
            l++;
        }

        color=s[r];
        while(r >= l && (s[r] == color || s[r] == 'w' || color == 'w'))
        {
            if(color == 'w' && s[r] != 'w')
                color=s[r];
            cnt++;
            r--;
        }
        res=max(res,cnt);
    }
    cout<<res<<endl;
    //system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14726642.html