(,),*组成的字符串,*可解释为(或),括号字符串是否是合法的
/*
(,),*组成的字符串,*可解释为(或),括号字符串是否是合法的
*/
public boolean isValidString(String str){
int left=0;//匹配所有的左括号,将*解释为)
int right=0;//匹配所有的右括号,将*解释为(
int n=str.length();
for(int i=0;i<n;i++){
char c=str.charAt(i);
if(c=='('){
left++;
right++;
}else if(c==')'){
left--;
right--;
}else if(c=='*'){
left--;
right++;
}
if(right<0){
return false;
}
left=Math.max(0,left);
}
return left==0;
}