char cmp(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 stack[n+1],top = 0;
for(int i = 0;i < n;i++){
char ch = cmp(s[i]);
if(ch){
//栈顶元素不匹配,返回false
if(top == 0 || stack[top-1] != ch){
return false;
}
//匹配正确,栈顶元素弹出
top--;
}
else{
//入栈
stack[top++] = s[i];
}
}
//如果遍历完后栈中没有元素,则为有效括号
return top == 0;
}
LeetCode:20. 有效的括号
最新推荐文章于 2024-07-25 17:54:26 发布