数据结构(三)栈结构模拟编译器判断括号是否匹配
来源:互联网 发布:大数据专业课程有哪些 编辑:程序博客网 时间:2024/06/04 00:29
用堆栈数据结构模拟编译器解决判断括号是否匹配问题
/** * 模拟编译器判断括号匹配问题 */public class Brackets { public static void main(String[] args) { System.out.println(isMatch("aa(bb){c}]")); } /** * 括弧是否匹配 * @param exp 带括弧的表达式 * @return 括弧是否匹配 * 分析:遍历表达式的每个字符,如果是左括弧,放入堆栈中,如果是右括号,从堆栈中取左括号进行判断,如果不一致,错位,如果一致,继续下一个括弧判断 */ public static boolean isMatch(String exp){ boolean res = true; //存放左括号的堆栈 Stack<Character> brackets = new Stack<Character>(); //遍历表达式中的每个字符 try{to: for (int i = 0; i < exp.length(); i++) { char c = exp.charAt(i); //判断是否是左括号 switch(c){ case '(' : case '[' : case '{' : //左括号入栈 brackets.push(c); break; case ')' :{ char left = brackets.pop(); if (left != '(') { //不匹配,结束循环 res = false; //跳出循环 break to; } break; } case ']' :{ char left = brackets.pop(); if (left != '[') { //不匹配,结束循环 res = false; //跳出循环 break to; } break; } case '}' :{ char left = brackets.pop(); if (left != '{') { //不匹配,结束循环 res = false; //跳出循环 break to; } break; } default: break; } } //判断堆栈是否为空 if (! brackets.isEmpty()) { //不为空,右括号少了 res = false; } }catch(EmptyStackException e){ //右括号多了 res = false; } return res; }}
0 0
- 数据结构(三)栈结构模拟编译器判断括号是否匹配
- 判断括号是否匹配
- 判断括号是否匹配
- 判断括号是否匹配
- 判断括号是否匹配
- 【数据结构】用栈检测括号是否匹配
- Matlab 使用栈判断括号是否匹配
- 基于栈判断括号是否匹配
- 利用栈判断括号是否匹配
- 利用栈判断括号是否匹配
- 栈的应用----判断括号是否匹配
- 数据结构--利用栈判断括号匹配
- 【算法】 判断括号是否匹配
- 判断花括号是否匹配
- 判断花括号是否匹配
- 判断花括号是否匹配
- 判断括号匹配是否正确:
- 数据结构-栈-括号匹配
- 浙江大学复试编程题之——Sharing
- Android 关于Selector的使用
- stm32f1xx HAL库下载介绍
- [leetcode]35. Search Insert Position(java)
- 【推荐】《Android应用安全设计及安全编码指导手册》更新到2016年9月1日版本
- 数据结构(三)栈结构模拟编译器判断括号是否匹配
- .DS_Store 文件是什么? / .DS_Store 文件是什么macOS
- POJ 1321 基础搜索 DFS 二
- leetcode 141. Linked List Cycle
- 基于利用指针对线性表的实现(单链表)
- java 使用 POI替换doc中的文字
- 导航条在push时出现黑框
- 《posix多线程编程》笔记(六)
- C实例---显示当前时间