C语言刷力扣
一 .括号问题
二.考点
1.可以先判断是数组长度是奇数还是偶数,因为括号都是成对出现的,如果为奇数直接返回false;
2.最左边的括号一定要是闭区间
3.左右边不能是闭区间
二 .知识点 栈
1.判断括号的有效性可以用栈这以1数据结构来解决
代码
//判断左右括号是否匹配
char pairs(char a) {
if (a == '}') return '{';
if (a == ']') return '[';
if (a == ')') return '(';
return 0;
}
bool isValid(char* s) {
int n = strlen(s);
if (n % 2 == 1) {
return false;
}
int stk[n + 1], top = 0;
for(int i = 0;i<n;i++)
{
char ch = pairs(s[i]);
if(ch)
{
if(top==0||stk[top-1]!=ch)//这边是top-1 不是top--
{
return false;
}
top--;
}
else
{
stk[top++] = s[i];
}
}
return top==0;
}
总结
得学习数据结构的内容和c++进一步的语法了 不管是不是为了比赛