给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 示例 1: 输入:s = "()" 输出:true 示例 2: 输入:s = "()[]{}" 输出:true 示例 3: 输入:s = "(]" 输出:false
class Solution {
public boolean isValid(String s) {
/**
就用栈就行 跟之前的一样思路
遇到 ( { [ 就进栈跟他相匹配的那个 作为正确的匹配括号
然后如果遇到) } ] 看跟正确的匹配 一样吗
*/
Stack<Character> stack=new Stack();
char[] chars=s.toCharArray();
for(char c:chars){
if(c=='('){
stack.push(')');
}else if(c=='{'){
stack.push('}');
}else if(c=='['){
stack.push(']');
} else {
if(stack.isEmpty()||c!=stack.pop()){
return false;
}
}
}
return stack.isEmpty();
}
}