编程题目:有效的括号
编程网站:力扣
题目链接:https://leetcode.cn/problems/valid-parentheses/description/
代码截图:
源码:
char pairs(char a) { //寻找配对括号
if(a=='}')
return '{';
if(a==']')
return '[';
if(a==')')
return '(';
return 0;
}
bool isValid(char* s) {
int n = strlen(s);
char st[n]; //设置栈数组,遇到左括号存储,遇到右括号判断top括号是否匹配
int top = -1;
if(n%2==1) //元素个数为奇数必定不能完全配对
return false;
for(int i = 0; i < n; i++) {
if(s[i] == '{' || s[i] == '(' || s[i] == '[') {
st[++top] = s[i];
} else {
if(top == -1 || pairs(s[i]) != st[top] ) {
return false;
}
top--;
}
}
return top == -1;
}
涉及算法:栈,字符配对
代码心得:
1.没注意‖两条件的先后顺序,要把先判断的条件放前面
2.把赋值符号不小心敲成了==
3.遇到元素配对问题可以先判断元素个数是否为奇数,减少时间消耗