2335. 括号校验器

1000ms 256MB 简单
题目描述
给定一个包含英文小写字母、运算符(`+`, `-`, `*`, `/`)和左右圆括号 `(`、`)` 的表达式。 请编写程序检查表达式中的左右圆括号是否匹配。 **匹配规则**: 1. 所有的左括号必须有对应的右括号闭合。 2. 右括号出现时,其左侧必须有未被匹配的左括号。 3. 表达式扫描结束后,不应留有未匹配的左括号。 若括号匹配,输出 `YES`;否则输出 `NO`。
输入格式
一行字符串,代表待检查的表达式(长度 $< 255$)。
输出格式
一行,输出 `YES` 或 `NO`。
样例 1
输入 (Input)
(y+2)/(12-y)
输出 (Output)
YES
样例 2
输入 (Input)
(a+b))
输出 (Output)
NO
本题是栈(Stack)的典型应用场景: - 遍历字符串,遇到左括号 `(` 时,将其压入栈中。 - 遇到右括号 `)` 时,检查栈是否为空: - 若栈为空,说明右括号多余,直接判定为不匹配(`NO`)。 - 若栈不为空,弹出栈顶的一个左括号,表示完成一对匹配。 - 字符串遍历结束后,检查栈是否为空: - 若栈为空,说明所有左括号都匹配完了,输出 `YES`。 - 若栈不为空,说明左括号有多余,输出 `NO`。
自测终端 stdin → stdout
输入 stdin
CtrlShiftEnter
输出 stdout

                
错误 stderr

                
CtrlEnter提交
自动保存已开启
操作成功
wzs_oj@kernel:~ — wzs-sh
guest@wzsoj:~$
刷新页面 F5
复制 Ctrl+C
粘贴 Ctrl+V
搜索题目
站点公告
今日神谕
CSP 倒计时
排行榜
我的提交
Esc 关闭 Enter 跳转 支持模糊匹配数字