当前位置: 首页 > 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();
}

http://www.xdnf.cn/news/160093.html

相关文章:

  • arduino显示数码管1~9
  • 除自身以外的乘积 --- 前缀和
  • UNO Less-to-More Generalization: 通过上下文生成解锁更多可控性
  • 代码随想录打卡|Day28 动态规划(理论基础、斐波那契数列、爬楼梯、使用最小花费爬楼梯)
  • 深度学习-学习笔记
  • 网络原理 - 9
  • 硬件须知的基本问题2
  • Network.framework 的引入,不是为了取代 URLSession
  • 【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Matlab完整源码)
  • 静态多态和动态多态的区别
  • 大规模SoC芯片Hierarchical Flow Calibre LVS教程
  • 20250426在ubuntu20.04.2系统上打包NanoPi NEO开发板的FriendlyCore系统刷机eMMC的固件
  • CSS 定位学习笔记
  • springboot入门-业务逻辑核心service层
  • 上海交大:推理驱动的多模态提示重写
  • 20250426在ubuntu20.04.2系统上解决问题mkfs.exfat command not found
  • OpenStack Yoga版安装笔记(24)启动一个实例(L2Population测试)
  • 线程池(五):线程池使用场景问题
  • ROC 曲线 和 AUC
  • C/C++ 头文件包含机制:从语法到最佳实践
  • 利用知识图谱提升测试用例生成精准性:基于Graphiti与DeepSeek-R1的实战指南
  • git 工具
  • 神经网络与深度学习第四章-前馈神经网络
  • 在分类任务中,显著性分析
  • C++ 同步原语
  • 关于动态规划的思考[特殊字符]
  • [特殊字符] 深入理解Spring Cloud与微服务架构:全流程详解(含中间件分类与实战经验)
  • Day13(前缀和)——LeetCode2845.统计趣味子数组的数目
  • 计蒜客4月训练赛-普及 T3
  • 运维面试情景题:如果有一块新的硬盘要加入机架如何配置;如果新加了一台服务器,如何配置安全措施