思路分析:1.判断字符为左括号,则将其压入数组中。
2.若字符为右括号,则判断其与数组中的最新压入的字符是否匹配。
3.若匹配,则弹出数组中的元素。
4.否则返回false;
javascript代码如下
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
var arr=[];
var len=s.length;
for(i=0;i<len;i++){
switch(s[i]){
case "[":arr.push(s[i]);break;
case "(":arr.push(s[i]);break;
case "{":arr.push(s[i]);break;
case "]":if(arr[arr.length-1]=="["){arr.pop();}
else{ return false;}
break;
case ")":if(arr[arr.length-1]=="("){arr.pop();}
else{ return false;}
break;
case "}":if(arr[arr.length-1]=="{"){arr.pop();}
else{ return false;}
break;
}
}
if(arr.length==0){
return true;
}
else{
return false;
}
};
如下代码使用对象:
var isValid = function(s) {
var left={
"(":")",
"[":"]",
"{":"}"
},
right={
"}":0,
")":0,
"]":0
},
len=s.length,
i=0,match=[];
for(i=0;i<len;i++){
if(left.hasOwnProperty(s[i])){
match.push(left[s[i]]);
}else{
if(s[i]==match[match.length-1]){
match.pop();
}else{
return false;
}
}
}
if(match.length===0){
return true;
}
else{
return false;
}
var arr=[];
var len=s.length;
for(i=0;i<len;i++){
switch(s[i]){
case "[":arr.push(s[i]);break;
case "(":arr.push(s[i]);break;
case "{":arr.push(s[i]);break;
case "]":if(arr[arr.length-1]=="["){arr.pop();}
else{ return false;}
break;
case ")":if(arr[arr.length-1]=="("){arr.pop();}
else{ return false;}
break;
case "}":if(arr[arr.length-1]=="{"){arr.pop();}
else{ return false;}
break;
}
}
if(arr.length==0){
return true;
}
else{
return false;
}
};