力扣20有效括号
运用栈的思想
思想
主要思想就是运用栈的思想,让与之匹配的左或右括号来进入栈,通过比对来出栈,然后用栈顶来进行判断。
代码
bool isValid(char *s)
{
int len = strlen(s);
int i,top = 0;
char a[10001];
if(s == NULL || s[0] == '\0')
{
return true;//数组为空时直接return
}
if(len % 2 == 1)//长度为奇数一定有个括号 无法匹配上
{
return false;//直接return
}
for(i = 0; i < len; i++)
{
if(s[i] == '(' || s[i] == '{' || s[i] == '[')
{
a[++top] = s[i];//可以自行体会一下++top与top++的不同
//++top先自加1再给出值,所以之后比较的top也为原始的值
//top++的话后面要写成a[top - 1]
}
else if(s[i] == a[top] + 1 || s[i] == a[top] + 2)
{
--top;
}
else
{
return false;//发现单个出现的右括号,不用判断了直接return
}
}
if(top == 0) return true;
else return false;
}