
括号匹配的方法有很多,最常用的便是用栈的方法解决,通过压栈与入栈进行匹配。当然,本文与栈毫无关系。本蒟蒻仅是通过字面的意思,通过不断读入字符,逐个字符进行判断,若为右括号则flag++,若为左括号则flag--,若为0,则表明这一对括号匹配成功。
完整代码如下:
#include "bits/stdc++.h"
using namespace std;
int main()
{
int i=0;
int flag=0;
char arr;
for(;;i++)
{
arr=getchar();
if(i==0&&arr==')'){
printf("NO") ;
break;
}
if(arr=='(') {
flag++;
}
if(arr==')'){
flag--;
}
if(flag<0){
printf("NO");
break;
}
if(arr=='@')
{
if(flag==0){
printf("YES");
break;
}
else{
printf("NO");
break;
}
}
}
return 0;
}
这个题目有一点要注意,就是判断完一个字符串之后,别忘了break,我一开始提交的时候时间超限就是这个原因。
最后,此文章是我发的第一篇洛谷刷题题解(显然,我是从入门开始做的),今后会一周更至少三篇题解来记录刷题过程中遇到的有意思的题目。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)