Nameless Parenthesis 题解
Nameless Parenthesis 题解
题意分析
分别统计不匹配的左右括号数。(左括号 (,右括号 ))
思路
一开始出现的右括号都是不匹配的(左侧没有左括号与之配对)。出现左括号后,我们可以统计左括号数量,遇到右括号时匹配一个(左括号数量减一),当左括号数量等于零时再出现的右括号是不匹配的,读入完毕后剩余的左括号也是不匹配的。
读入
可以用 getchar 读入一个字符,如果不是 '\' 就进行计算,否则输出并清零计数器。我们只需要句子中的左右括号,因此其他字符(可能包括奇奇怪怪的换行符之类的)可以忽略。
正解
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
scanf("%d",&n);
while(n--){
int ans1=0,ans2=0;//右括号、左括号计数器
char ch=getchar();//读入一个字符
while(ch!='\\'){//如果不是结束标志则循环
if(ch==')'){//是右括号
if(!ans2)ans1++;//没有可以匹配的左括号,右括号计数器加一
else ans2--;//匹配一组
}
else if(ch=='(')ans2++;//左括号计数器加一
ch=getchar();
}
printf("%d %d\n",ans2,ans1);//分别输出左右括号个数
}
return 0;
}

浙公网安备 33010602011771号