使用栈解决表达式括号匹配问题
创作时间:
作者:
@小白创作中心
使用栈解决表达式括号匹配问题
引用
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;
}
热门推荐
拍口播比较自然,答案网详细教程教给你
未婚先孕怎么办?全方位指南来了
没有签订劳动合同申请仲裁流程
买卖合同纠纷去哪咨询
伏诺拉生(vonoprazan)的适应症、用药注意事项及禁忌
社会考生可以参加普通高考吗?怎么报名?新高考不允许社会考生吗
右胸内部包含哪些内脏器官
“不要把女儿打扮得太漂亮”,老师的这个忠告,父母要听进去
照片打印机如何精准还原照片细腻质感与丰富色彩?
癸巳年柱男命:聪明伶俐,中年运势转好
美国留学生银行开户全攻略:从准备材料到账户安全
Excel图表转换为矢量文件格式的三种方法
深圳补办临时身份证指南
南京市口腔医院与江苏省口腔医院哪家更优?揭秘两家医疗机构的专业实力与技术对比!
百度网页版检索技巧指南:高效搜索的10个实用方法
英国护照使用指南:从基本信息到安全特征全解析
交通事故认定书错误怎么办
手游游戏收益分析及最新排行榜
量子计算原理与量子力学的关系是什么?
晚上吃饺子会胖吗?从食材到热量消耗的全面解析
Office办公软件分页功能使用指南
股票高位的判断标准是什么?处于股票高位时应如何操作?
新 '和田玉戒指的价格评估:影响因素与市场趋势分析'
走进遵义云门囤,三江交汇,领略喀斯特地貌的绝美风光!
企业融资渠道多元化:如何拓宽融资渠道并降低融资成本
降低融资成本,跨越经济周期
牧草生长条件和特性(探究牧草生长的关键因素及其特征)
到2030年,全国优质饲草产量有望达到1.3亿吨——饲草产业迎“三增”
AMC8立体几何题有哪些解题妙招?
宝可梦大集结妙蛙花技能搭配攻略:妙蛙花对战技能性格搭配详解