🌗 20. 有效的括号
2022年6月20日
- algorithm
🌗 20. 有效的括号
难度: 🌗
问题描述
解法
class Solution {
public boolean isValid(String s) {
// 思路:
// 借助 栈
int len = s.length();
// 特殊情况特判
if((len & 1) == 1) {
return false;
}
LinkedList<Character> stack = new LinkedList<>();
HashMap<Character, Character> map = new HashMap<>();
map.put('[', ']');
map.put('{', '}');
map.put('(', ')');
for(char c : s.toCharArray()) {
if(stack.isEmpty()) {
if(c == '(' || c == '{' || c == '[') {
stack.push(c);
} else {
return false;
}
} else {
// !stack.isEmpty()
if(c == '(' || c == '{' || c == '[') {
stack.push(c);
} else {
// 进行消除
char left = stack.peek();
char right = map.get(left);
if(right != c) {
return false;
} else {
stack.pop();
}
}
}
}
return stack.isEmpty();
}
}