开始用双端队列超时了。。。。
收获:字符串匹配的题目可以使用数字替换符号更容易看出规律
#include <iostream>
#include <deque>
#include <cstdio>
#include <cstring>
using namespace std;
#define maxn 20001
char str[maxn];
int main()
{
int cnt=1;
while(EOF!=scanf("%s",str) && '-'!=str[0])
{
deque<char> q;
int ans=0,i,j;
for(i=0;i<strlen(str);i++){//先对直接可以消去括号进行处理
if(q.empty()){
if('}'==str[i]){
ans++;
}
q.push_back('{');
continue;
}else{
if('{'==str[i]){
q.push_back('{');
continue;
}
q.pop_back();
}
}
ans+=q.size()/2;
printf("%d. %d\n",cnt,ans);
cnt++;
}
return 0;
}