内存:128  时间:1

题目描述

一串连续字符被称作围栏当且仅当它由间隔的‘|’和‘-’组成。比如“|-|-|-|”或“|-|”(引号仅供说明)。注意“|-||-|”或者“–”不是围栏,因为每个都包含了两个或两个以上的相同连续字符。给你一个字符串,请找出它的最长的一个可以称作围栏的子串长度。

输入

长度为n(0≤n≤50)的字符串s,s只包含‘| ’、‘-’字符,
有多组字符串,每个一行。

输出

在一行中输出最长的围栏长度值。

样例输入

|-
|||-||–|–|—|-||-|-|-|–||—||-||-||-|–||

样例输出

2
8

提示

代码如下

#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define MAXN 55
int main()
{
#ifdef ONLINE_JUDGE
#else
    freopen("D:/x/read.txt","r",stdin);
    //freopen("D:/x/out.txt","w",stdout);
#endif
    string s;
    while(cin>>s)
    {
        int ans=1,res=1;
        int len=s.length();
        if(len<=1)
        {
            ans=len;
            goto A;
        }
        if(s[1]!=s[0])ans=2;
        res=ans;
        for(int i=2; i<len; ++i)
        {
            if(s[i]!=s[i-1]) ++res;
            else ans=max(ans,res),res=1;
        }
        ans=max(ans,res);
A:
        cout<<ans<<endl;

    }
    return 0;
}

代码来源于互联网,仅供参考!