题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。
class Solution {
public boolean isValid(String s) {
int n=s.length();
if(n%2==1){
return false;
}
Map<Character,Character> pairs = new HashMap<Character,Character>();
pairs.put(')','(');
pairs.put(']','[');
pairs.put('}','{');
Stack<Character> stack = new Stack<Character>();
for(int i=0;i<n;i++){
char c=s.charAt(i);
if(pairs.containsKey(c)){
if(stack.empty()||stack.peek()!=pairs.get(c)){
return false;
}
stack.pop();
}else{
stack.push(c);
}
}
return stack.empty();
}
}
使用哈希表和栈的先进后出的特点,可以比较快的求解,代码可能不够简洁