差值比较
利用’(’ - ‘)’ 的值是-1,’[’ - ‘]’、’{’ - '}'等的值是-2来判断是否匹配
思路:遍历字符串,若栈为空,或栈顶元素与遍历到的当前元素不匹配则入栈,匹配则弹栈(弹栈后遍历的当前元素不入栈)。若遍历结束后栈为空,则说明括号都匹配上了。
private static void solution01() {
String str = "{()[[()]]<>{}()<>}()";
ArrayStack<Character> stack = new ArrayStack<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (stack.isEmpty()) {
stack.push(c);
} else {
char top = stack.peek();
if (top - c == -1 || top - c == -2) {
stack.pop();
} else {
stack.push(c);
}
}
}
System.out.println(stack.is