给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
思路:栈的操作
准备进栈的元素和栈顶元素比较
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
if (s.equals("")) {
return true;
} else {
char[] arr = s.toCharArray();
for (char c : arr) {
if (stack.size() == 0) {
stack.push(c);
} else if (isQ(stack.peek(), c)) {
stack.pop();
} else {
stack.push(c);
}
}
}
return stack.size() == 0;
}
private boolean isQ(char c1, char c2) {
return (c1 == '(' && c2 == ')') || (c1 == '[' && c2 == ']') || (c1 == '{' && c2 == '}');
}