思路:
-
1,利用栈的后进先出的特点,遇到左括号入栈,遇到右括号则将栈顶元素与右括号判断是否相等,不相等则不是合法的括号序列
-
2,循环结束后,栈为空,说明不是合法的括号序列
public boolean isValid (String s) {
Vector<Character> stack = new Vector<>();
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '(' || c == '[' || c == '{') {
stack.add(c);
} else if (stack.isEmpty()) {
return false;
} else {
char old = stack.remove(stack.size()-1);
if ((old == '(' && c != ')') || (old == '[' && c != ']') || (old == '{' && c != '}') ) {
return false;
}
}
}
if (!stack.isEmpty()) {
return false;
}
return true;
}