[C/C++]OJ练习题:括号匹配[栈训练]
来源:互联网 发布:java bufferstring 编辑:程序博客网 时间:2024/06/07 23:12
老题了,基本上就是用来做"栈"的训练。入门题。
蛮写一下,每次有人问就要现场写一遍也是挺麻烦的。
>代码
#include <iostream>//栈大小 #define stackSize 10000using namespace std;// 判断输入字符是否为左括号 bool isLeft(char c);// 判断输入字符是否为右括号 bool isRight(char c);// 获取右括号对应的左括号 char getSignal(char c);// 判断是否匹配 bool judge(char* statement);int main(){char statement[stackSize];while(cin>>statement){// 空行退出if(statement[0] == '\0')break;if(judge(statement)) cout<<"yes"<<endl;else cout<<"no"<<endl;}return 0;}bool judge(char* statement){char stack[stackSize];// 栈大小 int top = 0;// 栈顶 for(int i=0;statement[i]!='\0';i++){if( isLeft(statement[i]) ){// 栈溢出 if(top==stackSize-1) return false;// 入栈 stack[top++]= statement[i];} else if( isRight(statement[i]) ){// 当前右括号对应的左括号 char signal = getSignal(statement[i]);// 栈越界if(top==0) return false; // 左右匹配成功,出栈else if(stack[top-1] == signal) top-- ;// 匹配错误 else return false;}}// 循环结束,栈已空,匹配成功if(top==0) return true;// 循环结束,栈非空,匹配失败return false;}bool isLeft(char c){return c=='(' || c=='[' || c=='{';}bool isRight(char c){return c==')' || c==']' || c=='}';}char getSignal(char c){switch(c){case ')':return '(';case ']':return '[';case '}':return '{';}}
阅读全文
0 0
- [C/C++]OJ练习题:括号匹配[栈训练]
- [C/C++]OJ练习题: 压缩字符串&还原压缩字符串 [栈训练]
- c栈的应用之括号匹配
- c语言栈实现括号匹配
- C实例---括号匹配(栈实现)
- c语言括号匹配算法
- C语言 括号匹配问题
- C语言之括号匹配
- C程序括号匹配检查
- 数据结构(C语言)---括号匹配
- c语言练习题——递归和栈编程训练
- oj第七周训练C
- oj第八周训练C
- c语言练习题Training1整数算法训练
- c语言练习题——字符串训练
- oj 括号字符串匹配问题(栈)
- 括号匹配问题 栈的应用 C语言实现
- C语言 顺序栈使用之括号匹配
- JPA基本用法
- Linux下安装、启动、连接Redis详解
- 百分比换算十六进制透明度
- BufferedImage 图片打水印
- 一句代码解决CoordinatorLayout+AppBarLayout+NestedScrollView滑动不流畅的问题
- [C/C++]OJ练习题:括号匹配[栈训练]
- adb 连不上设备
- 深度学习实践操作—从小白到大白(一):Ubuntu系统U盘安装
- CCF分蛋糕
- mac 设置 launchpad 展示方式
- Mapreduce工作机制(一)框架
- sql语句删除重复
- javascript 如何判断比较当天24小时的时间大小
- C函数中的memcpy的用法(本文为转载!!!)