题目:
题解:
有左括号,相应的位置必须要有右括号与之对应,遍历字符串遇到左括号将对应的右括号压入栈的,遇到右括号与栈顶元素比较是否一致,如果不一样匹配失败,最后如果栈中没有元素则有效。
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for(int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch == '{') {
stack.push('}');
} else if (ch == '[') {
stack.push(']');
} else if (ch == '(') {
stack.push(')');
} else if (stack.isEmpty() || ch != stack.pop()){
return false;
}
}
return stack.isEmpty();
}
时间复杂度:O(n)