题目
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
解题思路
- 首先我们创建一个空的数组,
- 然后我们循环遍历传入的字符串
- 然后我们根据遍历到的字符{,(,[,分别将],},),添加到数组中。
- 遇到],},)这些时,我们将数组的最后一项进行比对,如果相同就删除。
- 遇到不同时,代表不对应,就返回false;
- 此时我们还要注意一开始传入的就是],},),我们就直接返回false
- 最后我们在循环完毕之后要判断数组的length,当长度大于0时,代表最后一个是],},),所以我们也要返回false;
- 之后我们就全部判定成功
代码
function isVaild(s) {
var arr = []
for (var i = 0; i < s.length; i++) {
switch (s[i]) {
case "(":
arr.push(")")
break;
case "[":
arr.push("]")
break;
case "{":
arr.push("}")
break;
default :
if(arr.length === 0 || s[i] !== arr[arr.length -1])return false;
arr.pop()
}
}
if(arr.length>0) return false;
return true
}