思路:数据结构:stack
循环读取字符,如果是括号后半部分则判断栈是否为空以及栈顶是否是该括号前半部分。
如果是括号前半部分,则入栈。
最后,栈是否为空判断括号字符串是否有效。
class Solution {
public boolean isValid(String s) {
HashMap<Character, Character> hashMap = new HashMap<Character, Character>();
hashMap.put(')', '(');
hashMap.put('}', '{');
hashMap.put(']', '[');
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (hashMap.containsKey(c)) {
Character topElement = stack.empty() ? '#' : stack.pop();
if (topElement != hashMap.get(c)) {
return false;
}
}
else {
stack.push(c);
}
}
return stack.isEmpty();
}
}
网友评论