UVA 673 Paretheses Balance
题目大意
怼给你一堆括号,判断是否合法
有三条规则
(1)空串合法
(2)如果
(3)如果
解题思路
可以成对的括号是贴在一起的(在上述规则的定义下)
通过栈的“后入先出”性质我们可以想到
遇到左括号就入栈,遇到右括号就判断是否与栈顶的左括号匹配,若匹配则出栈,不匹配则说明括号序列不合法,输出
到最后别忘记检测括号是否全部匹配(即是否栈空)
坑点
注意规则(1)空串合法,所以可能毒瘤UVA会给个空行,所以用
注意&&是短路运算符,在元素出栈前应该判断是否栈空,设是否栈空为条件
代码实现
#include <iostream>
using namespace std;
const int N = 1e7 + 86;
int top;
char mp[358], s[N];
int main()
{
int T;
scanf("%d", &T);
getchar();
mp['('] = ')', mp['['] = ']';
while (T -- )
{
string val;
getline(cin, val);
if (!val.size()) { puts("Yes"); continue ; }
bool err = 0;
for (auto c : val)
{
if (err) break ;
if (c == '(' || c == '[') s[ ++ top] = c;
else if (top && c == mp[s[top]]) -- top;
else err = 1;
}
if (top) err = 1, top = 0;
puts(err ? "No" : "Yes");
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)