时间复杂度O(n),空间复杂度O(n)
括号匹配优先想到栈,因为题目说了如果能闭合一定是按顺序的,所以只需要考虑当前元素和栈顶元素匹配与否。
class Solution {
public boolean isValid(String s) {
Stack<Character> stackcon = new Stack<Character>();
for(int i = 0;i < s.length();i++){
if(stackcon.empty()){
stackcon.push(s.charAt(i));
continue;
}
if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{')
stackcon.push(s.charAt(i));
else if(s.charAt(i) == ')' && stackcon.peek() == '(')
stackcon.pop();
else if(s.charAt(i) == '}' && stackcon.peek() == '{')
stackcon.pop();
else if(s.charAt(i) == ']' && stackcon.peek() == '[')
stackcon.pop();
else
stackcon.push(s.charAt(i));
}
if(stackcon.empty())
return true;
else
return false;
}
}