给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
第一时间想到的是用栈,每次扫描到左括号,就把相应的右括号入栈;扫描到右括号,要先判断栈是否为空以及栈顶元素是否相等。
class Solution {
public boolean isValid(String s) {
Stack<Character> sta = new Stack<Character>();
char[] cs = s.toCharArray();
for(char c:cs){
if(c=='(')sta.push(')');
if(c=='{')sta.push('}');
if(c=='[')sta.push(']');
if(c == ')' || c == ']' || c == '}'){
if(sta.isEmpty()||c!=sta.pop())
return false;
}
}
return sta.isEmpty();
}
}