首先是题目描述
先来梳理一下思路,也就是利用栈来进行一系列的操作:
如果s的长度是奇数那么就直接返回false
先把({[等放入栈中,之后判断他们的反括号,如果有反括号那么就利用栈中的元素进行相关匹配。
下面是相关源代码
var isValid = function(s){
let stack = []
let len = s.length
//长度为技术就直接break
if(len % 2 !== 0)return false
//定义三种括号
for(let item of s){
switch(item){
case '(' :
case '{':
case '[':
stack.push(item)
break
case ')':
if(stack.pop() !== '(' )return false
break
case '}':
if(stack.pop() !== '{' )return false
break
case ']':
if(stack.pop() !== '[' )return false
break
}
}
return !stack.length
}
相关结果
相关踩坑
这里第一次写的时候弄错了for in和for of的区别,第一次用的是for in 他是循环遍历数组下标的,所以出错了;还有一个就是switch之后没有跟进break,导致执行了之后的代码,产生一些false
大家多多注意