LeetCode_Java判断给出的字符串是否是合法的括号序列
public class BracketSequence {public static void main(String[] args) {System.out.println(isValid("([])"));}public static boolean isValid(String s) {if(s==null || s.length()==0){return true;}//新建栈,用以存储左括号Stack<Character> stack = new Stack<>();char[] chars = s.toCharArray();for (int i = 0; i < chars.length; i++) {char ch = s.charAt(i);//若字符char为左括号,则入栈if(ch == '(' || ch == '[' || ch == '{'){stack.push(ch);}else{  //若为右括号,则开始判断if(!stack.isEmpty()){   //当栈不为空时,弹出栈顶元素,看看两个括号是否匹配char outbrackets = stack.pop();if( !func(outbrackets,ch) ){    //若不匹配则返回falsereturn false;}}else{  //当栈为空时,说明在这个右括号前面没有左括号,不符合题意,返回falsereturn false;}}}//当for循环遍历完后,若栈中不为空,说明还剩下多余的左括号,同样不符合题意,返回falseif(!stack.isEmpty()){return false;}return true;}//func函数用于判断两个括号是否匹配public static boolean func(char a,char b){if(a == '(' && b == ')'){return true;}else if(a == '[' && b == ']'){return true;}else if(a == '{' && b == '}'){return true;}return false;}
}