题目链接:http://codeforces.com/contest/1101/problem/B
题意是找出最大的[:|||:]的长度,必须要有[]括起来,而且'|'必须在两个':'中间。
思路就是找出最左边的'['之后的第一个':',再找出最右边的']'之前的':'然后判断两个':'的位置,再去遍历中间的'|'就好了。
AC代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string str;
cin>>str;
int len = str.length();
int l = len - 1;
bool flag = false;
for(int i=0;i<len;i++){
if(str[i] == '[') flag = true;
if(str[i] == ':' && flag == true){
l = i;
break;
}
}
int r = 0;
flag = false;
for(int i=len-1;i>=0;i--){
if(str[i] == ']') flag = true;
if(str[i] == ':' && flag == true){
r = i;
break;
}
}
if(r <= l){
puts("-1");
return 0;
}
int ans = 0;
for(int i=l+1;i<r;i++){
if(str[i] == '|') ans ++;
}
printf("%d\n", ans + 4);
return 0;
}