题目:https://codeforces.com/problemset/problem/1101/B
题目:
Accordion由[:|:]组成的,中间的 | 可以是0个,也可以是无数个。
现在给你一个字符串,你可以删除其中的任意符号求最长的Accordion长度。
题解:
先将[: 和 :]的冒号位置找出来,然后再对其中间的 | 进行判断。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
typedef long long int ll;
int main()
{
string s;
cin >> s;
int st = s.size() - 1, ed = 0;
for (int i = 0; i < s.size(); i++)// 开始的:
{
if (s[i] == 91)//[
{
for (int j = i; j < s.size(); j++)
{
if (s[j] == 58)//:
{
st = j;
break;
}
}
break;
}
}
for (int i = s.size() - 1; i >st; i--)
{
if (s[i] == 93)//]
{
for (int j = i; j > st; j--)
{
if (s[j] == 58)//:
{
ed = j;
break;
}
}
break;
}
}
if (st >= ed) cout << -1 << endl;
else
{
int ans = 4;
for (int i = st; i < ed; i++)
{
if (s[i] == 124)
ans++;
}
cout << ans << endl;
}
}