题目描述
解题思路
遍历字符串的每个元素,按如下规则存储到字符数组中:
- 左括号 ‘(’ 、 ‘{’ 、 ‘[’ 直接存储
- 右括号 ‘)’ 、 ‘}’ 、 ‘]’ 检查其前者是否为对应左括号,若不是,则直接返回 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;
}
};