解题方案:
var isValid = function(s) {
if(s.length%2==1){ // 如果字符串的长度是奇数,那么不可能是有效的括号了
return false;
}
let arr=[]; // 暂时存储括号
let arr1=['(','[','{'];
let arr2={
'(':')',
'[':']',
'{':'}',
};
for(let i=0;i<s.length;i++){ // 遍历整个变量
if(arr1.indexOf(s[i])>=0){ // 如果此项是左边,先存下来
arr.push(s[i]);
}else{ // 如果此项是右边,进行判断
if(s[i]==arr2[arr[arr.length-1]]){ // 如果此项正好与数组的最后一项是对应的完整括号,就把数组的最后一项删除;
arr.pop()
}else{ // 如果没对应上,就证明不是有效的括号了
return false
}
}
}
if(arr.length==0){ // 如果最后所有符号都对应上了,暂存数组空了,就证明是有效的括号
return true
}else{ // 否则就不是有效的括号
return false
}
};