题目描述:
网页:https://leetcode-cn.com/problems/valid-parentheses/description/
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。
思路:
利用栈的先进后出的原则来进行解决。将括号的后半部分压入栈中,与字符串后半部分进行比较,若没有后半部分则return false。最后的stack.isEmpty()若栈为空则字符串为偶数,其后半部分均存在,则return true;否则return false;
代码:
public static boolean Q20(String s) { if (s.isEmpty()) return true; Stack<Character> stack = new Stack<>(); for (char c : s.toCharArray()) { if (c == '(') stack.push(')'); else if (c == '{') stack.push('}'); else if (c == '[') stack.push(']'); else if (stack.isEmpty() || stack.pop() != c) return false; } return stack.isEmpty(); }
