括号匹配问题——用栈实现
来源:互联网 发布:广州java编程培训 编辑:程序博客网 时间:2024/06/08 15:42
一个字符串中的括号的不匹配分为左括号多,右括号多或者次序问题
在检测一个字符串中的字符如果是括号并且是左括号将它入栈,如果是右括号判断与栈顶元素是否匹配如果匹配将栈顶元素出栈如果不匹配返回false并输出括号次序不匹配。当栈为空且字符串没有遍历完且其中还有右括号时返回false输出右括号多于左括号,当字符串遍历完时栈不为空则返回false输出左括号多于右括号。只有当栈为空且遍历完字符串时括号才匹配
bool IsBrackets(const char c){ if ('(' == c ||'[' == c || '{' == c || ')' == c || ']' == c || '}' == c) { return true; } return false;}bool MatchBrackets(char arr[], size_t size){ stack<char> s; size_t i = 0; for (i = 0; i < size; i++) { if (IsBrackets(arr[i])) { if ('(' == arr[i] || '[' == arr[i] || '{' == arr[i]) { s.push(arr[i]); } if (')' == arr[i] || ']' == arr[i] || '}' == arr[i]) { if (s.empty()) { cout << "右括号多于左括号" << endl; return false; } if (')' == arr[i]) { if ('(' == s.top()) { s.pop(); continue; } } if (']' == arr[i]) { if ('[' == s.top()) { s.pop(); continue; } } if ('}' == arr[i]) { if ('{' == s.top()) { s.pop(); continue; } } cout << "左右括号次序不匹配" << endl; return false; } } } if (s.empty()) { return true; } cout << "左括号多于有括号" << endl; return false;}
0 0
- 括号匹配问题——用栈实现
- 括号匹配问题,用栈实现
- 括号匹配问题--栈实现
- 数据结构——栈实现括号匹配
- 用栈实现括号匹配
- 用栈实现括号匹配
- 用栈实现括号匹配
- C++ 用栈实现字符串中括号匹配问题()
- Java实现用栈判断括号匹配问题
- 数据结构-----栈实现括号匹配问题
- java利用栈实现括号()[]匹配问题
- 数据结构作业 栈 实现 括号匹配 问题
- [栈] 括号匹配问题
- 栈(括号匹配问题)
- 括号匹配问题(栈)
- 栈实现括号匹配
- 栈实现括号匹配
- 栈实现括号匹配
- MySQL 定时任务
- mysql基础(自己整理)
- c语言简单程序
- JSP和Servlet的部署问题
- 汉诺塔
- 括号匹配问题——用栈实现
- mysql 游标
- 股票分析
- 开坑了...
- 在树莓派3上安装ROS
- android启动之子系统切换
- 1T和12T单片机的区别
- 循环删除大数据表中的记录
- 什么是JVM,JDK和JRE联系与区别