算法题之有效括号问题
题目描述
思路分析
思路图解
代码实现
public boolean isValid(String s
) {
if (s
== null
|| s
.length() == 0) return true;
if (s
.length() % 2 == 1) return false;
Map
<Character,Character> map
= new HashMap<>();
map
.put('(',')');
map
.put('[',']');
map
.put('{','}');
map
.put('*','*');
if(s
.length() > 0 && !map
.containsKey(s
.charAt(0))) return false;
Stack
<Character> stack
= new Stack<>();
stack
.push('*');
for (int i
= 0; i
< s
.length(); i
++) {
char val
= s
.charAt(i
);
if (map
.containsKey(val
)) {
stack
.push(val
);
}else if (map
.get(stack
.pop()) != val
) {
return false;
}
}
return stack
.size() == 1;
}
转载请注明原文地址:https://blackberry.8miu.com/read-30250.html