栈(先进后出)
栈的应用场景
- 需要先进后出的场景
- 比如:十进制转二进制、判断字符串括号是否有效、函数调用堆栈
LeetCode 有效的括号(20题号)
思路:1.新建一个栈 2.扫描字符串,遇到左括号入栈,遇到和栈顶括号类型匹配的右括号则出栈,类型不匹配则直接判断不合法 3.最后栈空了就合法,否则不合法
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
if(!s || (s && s.length%2 == 1)) return false;
const stack = []
for(let i=0; i<s.length; i++) {
const c = s[i]
if(c === "(" || c === "[" || c === "{") {
stack.push(c)
}else {
const t = stack[stack.length - 1]
if((c === ")" && t === "(") || (c === "]" && t === "[") || (c === "}" && t === "{")) {
stack.pop()
}else {
return false
}
}
}
return stack.length === 0
};