题目描述


解题思路
遍历字符串的每个元素,按如下规则存储到字符数组中:
- 左括号 ‘(’ 、 ‘{’ 、 ‘[’ 直接存储
- 右括号 ‘)’ 、 ‘}’ 、 ‘]’ 检查其前者是否为对应左括号,若不是,则直接返回 false ,若是,则将前者从数组中移除
遍历完每个元素后,判断数组中是否还有元素,若有则返回 false ,没有则返回 true
代码
class Solution {
public:
bool isValid(string s) {
char c[10000];
int j=0;
for(char a:s){
switch(a){
case ')':
if(!j||c[--j]!='(') return false;
break;
case '}':
if(!j||c[--j]!='{') return false;
break;
case ']':
if(!j||c[--j]!='[') return false;
break;
default:
c[j]=a;
j++;
break;
}
}
if(!j) return true;
return false;
}
};


该博客主要讨论了一种有效的括号匹配算法。通过遍历输入字符串中的每个字符,检查左括号和右括号的对应关系,实现有效性的验证。如果遇到不匹配的括号或者遍历结束后仍有未配对的括号,则返回无效;否则,返回有效。
189

被折叠的 条评论
为什么被折叠?



