20. 有效的括号
思路:用一个栈记录右括号,遍历整个字符串,每遇到一个左括号,便将其对应的右括号压入栈中,可知内层的括号在栈顶,如果遇到右括号,分为两种情况,其一,栈内无元素,说明该右括号无落单,其二,弹出的栈顶元素与该右括号不同,说明该右括号匹配失败,两种情况都为false。最后,如果栈中仍然有元素,说明左括号落单,返回false,若无元素,则为true。
Java
class Solution {
public boolean isValid(String s) {
Stack<Character> st = new Stack<>();
for(char c:s.toCharArray()){
if(c=='('){
st.push(')');
}else if(c=='['){
st.push(']');
}else if(c=='{'){
st.push('}');
}else if(st.isEmpty()||c!=st.pop()){
return false;
}
}
return st.isEmpty();
}
}