思路:
判断括号的有效性可以使用「栈」这一数据结构来解决。
先出现的左括号后匹配——先进后出用栈!
此题,把左括号加入栈,匹配的过程就是出栈的过程。
代码实现:1定义辅助函数判断一对符号是否匹配
2核心函数:字符串空返回真;遍历字符串,如果是右括号的情况,判断栈顶是否是匹配的左括号,匹配成功则出栈;如果是左括号,入栈等待匹配;最后,完全匹配的要求是栈为空。
class Solution {
public boolean isValid(String s) {
if(s.length() % 2==0){
Map<Character,Character> pairs = new HashMap<Character,Character>();
pairs.put(')','(');
pairs.put('}','{');
pairs.put(']','[');
LinkedList<Character> stack = new LinkedList<Character>();
for(int i=0;i<s.length();i++){
char ch = s.charAt(i);
if(pairs.containsKey(ch)){
if(stack.isEmpty()||stack.peek()!=pairs.get(ch)){
return false;
}
stack.pop();
}else{
stack.push(ch);
}
}
return stack.isEmpty();
}
return false;
}
}