题目描述:
网页: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();
}