20.有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: “()”
输出: true
示例 2:
输入: “()[]{}”
输出: true
示例 3:
输入: “(]”
输出: false
bool isValid(char * s){
if(*s=='\0')return true;
char *a=(char *)malloc(strlen(s)*sizeof(char));
int top=0;
for(int i=0;i<strlen(s);i++){
if(s[i]=='('||s[i]=='['||s[i]=='{'){
a[top++]=s[i];
}
else{
if((--top)<0) return false;
if((s[i]==')')&&(a[top]!='(')) return false;
if((s[i]==']')&&(a[top]!='[')) return false;
if((s[i]=='}')&&(a[top]!='{')) return false;
}
}
return (!top);
}
使用入栈出栈对比的方法,来进行匹配。
a++是先执行表达式后再自袭增,执行表达式时使知用的是a的原值。
++a是先自增再执行表达示,执行表达式时使用的是自增后道的a。