public class Solution{
public boolean isValid(String s) {
// 空字符串可被认为是有效字符串
if (s.length() == 0) {
return true;
}
HashMap<Character, Character> hm = new HashMap<>();
hm.put('(', ')');
hm.put('[', ']');
hm.put('{', '}');
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
// 如果是左括号,入栈
if (hm.containsKey(c)) {
stack.push(c);
}
// 如果是右括号
else {
// 如果能匹配,注意出栈之前都要判断栈是否为空
if (! stack.isEmpty() && hm.get(stack.peek()) == c) {
stack.pop();
}
else {
return false;
}
}
}
// 如果字符串只有一个左括号会出错,所以要判断栈是否为空
return stack.isEmpty() ? true : false;
}
}
栈的几道练习题
最新推荐文章于 2023-08-06 22:07:57 发布