转载出处:https://blog.csdn.net/ctianju/article/details/116745812
题目
给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
分析
采用栈的特性,先进后出来进行,先把一边的符号放入,不存在马上返回false,成立就继续判断后续
java代码
public class SequenceOrder {
public static void main(String[] args) {
System.out.println("Valid = "+isOk("{}[}"));
}
public static boolean isOk(String s) {
Stack<Character> stack = new Stack<>();
char[] chars = s.toCharArray();
for (char ch : chars) {
if (ch == '{' || ch == '(' || ch == '[') {
stack.add(ch);
} else {
if (stack.isEmpty()) {
return false;
}
if (ch == ')' && stack.pop() != '(') {
return false;
}
if (ch == ']' && stack.pop() != '[') {
return false;
}
if (ch == '}' && stack.pop() != '{') {
return false;
}
}
}
return stack.isEmpty();
}
}