写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)
给定一个表达式A,请返回一个bool值,代表它是否合法。
测试样例:
"[a+b*(5-4)]*{x+b+b*(({1+2)}}"
返回:true(其实仔细看这个其实是false,题目给错了)
package base001;
import java.util.*;
public class strFind {
public static boolean chkLegal(String A) {
Stack<Object> stack=new Stack<>();
Map<String,String> map=new HashMap<>();
map.put("(",")");
map.put("[","]");
map.put("{","}");
char[] c=A.toCharArray();
for(int i=0;i<c.length;i++){
//压栈
if(c[i]=='{'||c[i]=='['||c[i]=='('){
stack.push(c[i]);
}
if(c[i]=='}'||c[i]==']'||c[i]==')'){
String str=String.valueOf(stack.pop());
if(c[i]!=map.get(str).toCharArray()[0]){
return false;
}
}
}
return true;
}
public static void main(String[] args) {
String s = "[a+b*(5-4)]*{x+b+b*(({1+2)}}";
System.out.println(chkLegal(s));
}
}
结果:
false