括号匹配(栈和队列)
Description
假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“ ”,且这三种括号可按任意的次序嵌套使用
(如:…[…{… …[…]…]…[…]…(…)…)。编写判别给定表达式中所含括号是否正确配对出现的算法。输出结果YES 或者 NO。
Input
5+{[2X5]+2}
Output
YES
Sample Input
8-[{2+7]}
Sample Output
NO
///这个程序存在问题,按照题意三种括号成对存在,成对出现,后台可能也是这样安排的,但对比第一个例题,若是右括号多余左括号那么就不行了 #include<iostream> #include<stack> #include<stdio.h> #include<string.h> using namespace std; int main() { int len,i,j; char x[601]; gets(x); len=strlen(x); stack<char>s; s.push('#'); for(i=0; i<len; i++) { if((x[i]=='(')||(x[i]=='[')||(x[i]=='{')) s.push(x[i]);///压入栈 else if((x[i]==')'&&s.top()=='(')||(x[i]==']'&&s.top()=='[')||(x[i]=='}'&&s.top()=='{')) { s.pop();///出栈 } } if(s.top()=='#') printf("YES\n"); else printf("NO\n"); return 0; }
本文作者:王陸
本文链接:https://www.cnblogs.com/wkfvawl/p/8667052.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步