本文主要是介绍LeetCode20 有效的括号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题型:栈
题目:
代码:
public boolean isValidReview(String s) {//(1)从s的i=0位置一次开始压栈,遇到左括号压栈,不管是大中小三种,左括号,压//(2)遇到右括号,不论大中小括号三种,只要是右括号,就弹出一个括号,必须还要和当前括号匹配才行//(3)一旦无法匹配就false,全体都匹配上了就是true,非常简单!if (s.compareTo("") == 0 || s.length() == 0) return true;if (s.length() < 2) return false;Stack<Character> stack = new Stack<>();int N = s.length();for (int i = 0; i < N; i++) {char c = s.charAt(i);if (c == '(' || c == '[' || c == '{') stack.push(c);else {//右括号弹出对比if (stack.isEmpty()) return false;//提前就发现没了,说明问题大了,缺呀char left = stack.pop();if ((left == '(' && c == ')') ||(left == '[' && c == ']') ||(left == '{' && c == '}')) continue; // 注意这里是continue.else return false;//如果不满足其中一种匹配的条件,失败}}//全部通过,则OKreturn stack.isEmpty(); // 注意最终返回条件}
这篇关于LeetCode20 有效的括号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!