定义一个辅助map,判断字符串的字符是否在
]})
中。一旦是右括号就要弹出元素,判断匹配。
class Solution {
public boolean isValid(String s) {
if (s.length() % 2 == 1) {
return false;
}
Map<Character, Character> pairs = new HashMap<>();
pairs.put(')', '(');
pairs.put(']', '[');
pairs.put('}', '{');
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if (pairs.containsKey(s.charAt(i))) {
if (stack.isEmpty() || pairs.get(s.charAt(i)) != stack.peek()) {
return false;
}
stack.pop();
} else {
stack.push(s.charAt(i));
}
}
if (!stack.isEmpty()) {
return false;
}
return true;
}
}
使用栈记录最小的元素。
class MinStack {
private Stack<Integer> stack;
private Stack<Integer> minStack;
public MinStack() {
stack = new Stack<>();
minStack = new Stack<>();
}
public void push(int val) {
stack.push(val);
if (minStack.isEmpty() || minStack.peek() >= val) {
minStack.push(val);
}
}
public void pop() {
Integer pop = stack.pop();
if (pop.equals(minStack.peek())) {
minStack.pop();
}
}
public int top() {
return stack.peek();
}
public int getMin() {
return minStack.peek();
}
}