括号是否匹配 java实现
2014-10-28 14:39
295 查看
括号是否匹配时比较经典的算法题目,理解起来可能有点麻烦,但当真正理解以后会发现很简单。
原理就是利用栈的模式,现将左括号压进栈,当出现右括号时,判断是否和最近一个压进栈的相匹配,当匹配时将最近一个压进栈的左括号拿出,进行下一个判断,如果不匹配则不成功,直接退出。
具体代码如下:
原理就是利用栈的模式,现将左括号压进栈,当出现右括号时,判断是否和最近一个压进栈的相匹配,当匹配时将最近一个压进栈的左括号拿出,进行下一个判断,如果不匹配则不成功,直接退出。
具体代码如下:
package com.junl.scott.brackets; import java.util.Stack; public class BracketsMatch { public static void main(String[] args) { System.out.println(BracketsMatch.partenMatch("(1+2)*(1+2)=9")); } public static boolean partenMatch(String exp) { Stack<Character> stack = new Stack<Character>(); for (int i = 0; i < exp.length(); i++) { switch (exp.charAt(i)) { case '{': case '(': case '[': stack.push(exp.charAt(i)); break; case '}': case ')': case ']': if (stack.isEmpty()) return false; if (!BracketsMatch.match(stack.pop(), exp.charAt(i))) return false; break; } } if (!stack.isEmpty()) return false; return true; } public static boolean match(char strright, char strleft) { switch (strright) { case '{': if (strleft == '}') return true; break; case '(': if (strleft == ')') return true; break; case '[': if (strleft == ']') return true; break; default: break; } return false; } }
相关文章推荐
- 对如下字符串(234453)[234]{2324}分析它的括号使用是否正确,括号匹配(Java实现)
- java实现用栈解决一个串中的括号是否匹配
- 用 java 判断 括号是否完全匹配
- java实现的判断括号是否成对的代码,()[]{}都可以
- Java实现用栈判断括号匹配问题
- java利用栈实现括号()[]匹配问题
- java实现括号匹配
- java实现最长匹配括号的长度
- Java-利用栈实现括号匹配
- 括号匹配算法的一种正确实现(java)
- 判断括号是否匹配的递归与非递归实现
- Java堆栈的应用1----------堆栈的自定义实现以及括号匹配算法的Java实现
- 用堆栈实现给定数学表达式括号是否匹配 推荐
- 括号匹配算法的java实现
- C++与Java之括号匹配(栈实现)
- ACM括号匹配问题(java实现)
- 使用栈实现括号匹配算法-java
- 用栈实现括号匹配检验(java)
- 输出n对括号所有有效的匹配 java实现
- Java实现括号匹配