链接:
https://www.nowcoder.com/questionTerminal/227893ccf81d4e8589875922f0d9319e?pos=25&mutiTagIds=581&orderByHotValue=1
来源:牛客网
说明:原来的牛客网的测试用例是返回true,但是下面的测试用例应该返回false
写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)
给定一个表达式A,请返回一个bool值,代表它是否合法。
测试样例:
"[a+b*(5-4)]*{x+b+b*(({1+2)}}"
返回:false
// "[a+b*(5-4)]*{x+b+b*(({1+2)}}"
public static boolean chkLegal(String A) {
Stack<Character> stack = new Stack<>();
for(int i=0;i<A.length();i++){
if(A.charAt(i)=='['||A.charAt(i)=='('||A.charAt(i)=='{'){
stack.push(A.charAt(i));
}
if(A.charAt(i)==']'||A.charAt(i)==')'||A.charAt(i)=='}'){
stack.pop();
}
}
if(stack.isEmpty()){
return true;
}
return false;
}
主要思想:左边括号的数量和右边括号的数量一样就好了