当前位置: 首页 > news >正文

栈应用:括号匹配

1:普通字符串括号匹配

#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool mat(char,char);
int if_match(string);
int main(){string a;cin>>a;cout<<if_match(a)<<endl;return 0;
}
bool mat(char a,char b){if(a=='(')return b==')';if(a=='[')return b==']';if(a=='{')return b=='}';return 0;
}
int if_match(string input){//返回第一个不匹配的位置stack<char> t;int il=input.length();for(int i=0;i<il;i++){if(input[i]=='('||input[i]=='['||input[i]=='{'){t.push(input[i]);}else if(input[i]==')'||input[i]==']'||input[i]=='}'){if(t.empty()==true){return i;}if(!mat(t.top(),input[i])){return i;}else {t.pop();}}}if(t.empty())return -1;else return il-1;
}

2:仅适用于/**/,几种括号纯字符串的检测

输入:仅包含'('、')'、'['、']'、'{'、'}'、/、*的字符串

输出:若匹配输出“Yes”,

           若不匹配输出“No”。

#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool mat(char,char);
bool if_match(string);
int main(){string a;cin>>a;if(if_match(a)){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}return 0;
}
bool mat(char a,char b){if(a=='(')return b==')';if(a=='[')return b==']';if(a=='{')return b=='}';return 0;
}
bool if_match(string input){///*==<,*/==>stack<char> t;int il=input.length();for(int i=0;i<il;i++){//cout<<i<<' '<<(t.empty()?'?':t.top())<<endl;if(i<il-1){if(input[i]=='*'&&input[i+1]!='/'){return 0;}if(input[i]=='/'&&input[i+1]!='*'){return 0;}if(input[i]=='/'&&input[i+1]=='*'){t.push('<');i++;}if(input[i]=='*'&&input[i+1]=='/'){if(t.empty()==true){return 0;}if(t.top()=='<'){t.pop();i++;}else {return 0;}}}else{if(input[i]=='*'||input[i]=='/')return 0;}if(input[i]=='('||input[i]=='['||input[i]=='{'){t.push(input[i]);}else if(input[i]==')'||input[i]==']'||input[i]=='}'){if(t.empty()==true){return 0;}if(!mat(t.top(),input[i])){return 0;}else {t.pop();}}}return t.empty();
}

相关文章:

  • 论文阅读:2025 arxiv Aligning to What? Limits to RLHF Based Alignment
  • Java大师成长计划之第4天:Java中的泛型
  • Yarn 安装与使用教程
  • 自动化测试方法有哪些?
  • 【软考-架构】14、软件可靠性基础
  • 深入解析 ASP.NET Core 中的 ResourceFilter
  • 从像素到实例:揭示图像分割如何改变视觉世界
  • 线程池单例模式
  • 【设计模式区别】装饰器模式和适配器模式区别
  • 单例设计模式之懒汉式以及线程安全问题
  • 从循环角度分析逐位分离法
  • 【人工智能之大模型】详述大模型中流水线并行(Pipeline Parallelism)的​GPipe推理框架?
  • 如何选择合适的探针台
  • C#中wpf程序中的x名空间详解
  • 微信小程序 template 模版详解
  • 机器学习之二:指导式学习
  • 精益数据分析(27/126):剖析用户价值与商业模式拼图
  • 有源晶振与无源晶振详解:区别、应用与选型指南
  • 电子电器架构 --- 乘用车电气/电子架构开发的关键挑战与应对策略
  • SQL 查询进阶:WHERE 子句与连接查询详解
  • 美国政府将暂时恢复部分受影响留学生的合法身份,并将制订新标准
  • 讲座|现代女性在面对生育、事业与家庭之间的复杂抉择
  • 我驻美使馆:中美并没有就关税问题磋商谈判,更谈不上达成协议
  • 政治局会议深读|首提“持续巩固房地产市场稳定态势”,楼市政策还有哪些优化空间
  • 居民被脱落的外墙瓦砖砸中致十级伤残,小区物业赔付16万元
  • 四川:全省统一取消普通住宅和非普通住宅标准