首先看题目要求,LeetCode20. 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:
1左括号必须用相同类型的右括号闭合。
2左括号必须以正确的顺序闭合。
示例1:
输入:s = "()[]{}"
输出:true
boolean isValid(String s) {
if(s.length()<=1){
return false;
}
Map<Character,Character> smap = new HashMap<>();
smap.put('(',')');
smap.put('{','}');
smap.put('[',']');
Stack<Character> stack = new Stack<>();
for(int i=0;i<s.length();i++){
char item = s.charAt(i);
if(smap.containsKey(item)){
stack.push(item);
}else{
if(!stack.isEmpty()){
Character left = stack.pop();
char rightchar = smap.get(left);
if(rightchar != item){
return false;
}
}else {
return false;
}
}
}
return stack.isEmpty();
}