- 有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
示例 4:
输入:s = “([)]”
输出:false
示例 5:
输入:s = “{[]}”
输出:true
提示:
1 <= s.length <= 104
s 仅由括号 ‘()[]{}’ 组成
代码如下:
char pairs(char a) {
if (a == '}') return '{';
if (a == ']') return '[';
if (a == ')') return '(';
return 0;
}
bool isValid(char* s) {
int len=strlen(s);
if(len%2!=0){//有奇数个字符一定不匹配
return false;
}
char stack[len+1];
int top=0;
for(int i=0;i<len;i++){
char t=pairs(s[i]);
if(t){//若是右括号则出栈
if(top==0||t!=stack[top-1])
return false;
top--;
}else{//若是左括号则入栈
stack[top++]=s[i];
}
}
return top==0;//若最后栈空则为有效括号,反之则为无效括号
}