20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
晓琢思想:遇左括号,则其要相应的右括号,把需要的右括号加入栈;
遇右括号,栈空-没人需要他false, 栈不空栈顶不是他,需要的不是他-false
class Solution {
public boolean isValid(String s) {
int n = s.length();
Stack<Character> st = new Stack<>();
for(int i = 0; i < n; i++){
char temp = s.charAt(i);
if(temp == '('){
st.push(')');
}else if(temp == '{'){
st.push('}');
}else if(temp == '['){
st.push(']');
}else if(!st.isEmpty()&&st.peek()==temp){
st.pop();
}else{
return false;
}
}
return st.isEmpty();
}
}