使用栈解决表达式括号匹配问题
创作时间:
作者:
@小白创作中心
使用栈解决表达式括号匹配问题
引用
CSDN
1.
https://blog.csdn.net/m0_62531913/article/details/137616921
本文将介绍如何使用栈数据结构来解决表达式括号匹配问题。这是一个经典的算法问题,通常出现在编程竞赛和面试中。通过本文,你将学习到栈的基本操作以及如何将其应用于实际问题的解决。
题目描述
给定一个字符串,判断其中的括号是否匹配。具体来说,就是判断字符串中的每个左括号 '(' 是否都有一个对应的右括号 ')',且括号的顺序正确。
思路分析
使用栈(stack)是解决这类问题的经典方法。栈是一种后进先出(LIFO)的数据结构,非常适合用来处理括号匹配问题。
首先定义一个栈 stack<char> st;
遍历字符串,只需要看左括号和右括号,其他的字符不用考虑。
当字符为左括号时,压栈 st.push(')');
当字符为右括号时,我们看栈是否为空,如果栈为空,括号就不合法。否则,我们出栈 st.pop();
最后当遍历完字符串后,我们看栈是否为空。为空就说明括号合法,否则说明不合法。
代码实现
下面是完整的C++代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
string s; cin >> s;
stack<int> st;
for (int i = 0; i < s.size(); i++) {
if (s[i] == '(') st.push('(');
else if (s[i] == ')') {
if (st.empty()) {
cout << "NO" << endl;
return 0;
}
st.pop();
}
}
if (st.empty()) cout << "YES" << endl;
else cout << "NO" << endl;
return 0;
}
热门推荐
什么是B轮融资的定义?这些融资如何影响初创企业的发展和市场表现?
家电清洁技巧大揭秘:打造洁净家居生活
这是迄今为止发现的第一种不需要氧气就能生存的动物
血常规这3项指标正常,恭喜您!肿瘤复发的风险显著降低
《花儿绽放》:乡村振兴与巾帼力量的交响乐章
解码HRBP:以战略融合、深度沟通与全链条优化推动组织价值增长
如何通过车牌号码找车主请求挪车
冒菜和麻辣烫的区别及川菜制作方法
范玉芳医生:甲状腺结节的中西医结合诊疗之路,重塑健康活力
成也萧何,败也萧何:韩信之死与萧何的千丝万缕
硬木?软木?实木家具选哪种木材好?9种常见木材科普
虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型(simulink仿真实现)
加热几分钟产生几十亿微塑料,你吃的这个东西会损伤多个器官
泰国榴莲摘果时间表(泰国榴莲几月份成熟)
Kali 2024更换源(超详细,附国内优质镜像源地址)
鼻塞 喷嚏 眼痒?老中医教你如何应对烦人的过敏性鼻炎!
儿科和儿科保健科的区别
司马亮:司马懿之子,东晋名将的传奇人生
如何提升仓库管理人员的专业技能
固态硬盘的使用寿命是多久?如何计算SSD的擦写寿命?
四季豆的功效与作用是什么
春分工程·科学百科 | 焰色反应:烟花为什么是彩色的?
硫磺皂洗头真的有效吗?一位大妈的亲身经历告诉你答案
“新王”加冕!中国学者最新研究:它就是亚洲陆生毒蛇第一毒
出国留学手续需要哪些证明?这些证明怎么办理?
古代星空的守望者:钦天监在现代的印记
为什么下雪不冷化雪冷?你以前的认知可能并不准确
生活中怎么判断输电线路多少伏?
GTX和RTX显卡哪个好?一文详解两者区别与选购建议
GTX和RTX显卡的区别:性能、技术与性价比的深入解析