题目
写一段代码,判断一个包括’{’,’[’,’(’,’)’,’]’,’}'的表达式是否合法(注意看样例的合法规则。)
可以看到一个合法的表达式,左括号和右括号必须相互对应。
给定一个表达式A,请返回一个bool值,代表它是否合法。
测试样例1:
“[a+b*(5-4)]{x+b+b(({1+2}))}”
返回:true
分析
此题判断表达式是否合法只需判断括号是否对应即可。
判断几种括号是否都相互对应了,设置三个变量:leftnum1, leftnum2, leftnum3,分别记录 ‘{’, ‘[’, ‘(’ 的数量,当遇到左括号时,对应的变量加一,遇到对应的右括号时,对应的变量减一。最后如果三个变量值都为0,则说明表达式合法。
代码
import java.util.*;
public class ChkExpression {
public boolean chkLegal(String A) {
int leftnum1 = 0; //记录'{'的数目
int leftnum2 = 0; //记录'['的数目
int leftnum3 = 0; //记录'('的数目
for(int i=0; i<A.length(); i++){
switch(A.charAt(i)){
case('{'):
leftnum1++;
continue;
case('['):
leftnum2++;
continue;
case('('):
leftnum3++;
continue;
case('}'):
leftnum1--;
continue;
case(']'):
leftnum2--;
continue;
case(')'):
leftnum3--;
continue;
default:
continue;
}
}
if(leftnum1==0 && leftnum2==0 && leftnum3==0){
return true;
}
return false;
}
}