leetcode 20 有效的括号
思路:利用栈先进去的后处理,当是一个右括号就判断栈顶是否是匹配的左括号,如果不是直接返回false,如果匹配,弹出栈顶
如果是左括号就入栈
第一次
1 /** 2 * @param {string} s 3 * @return {boolean} 4 */ 5 var isValid = function(s) { 6 const len = s.length 7 if(len % 2 != 0) return false 8 let stack = [] 9 let L = ['(','[','{'] 10 let R = [')',']','}'] 11 for(let i = 0; i< len; i++){ 12 if(L.includes(s[i])){ 13 stack.push(s[i]) 14 }else{ 15 let x = R.indexOf(s[i]) 16 if(L[s[i]] != stack.pop()){ 17 return false 18 } 19 } 20 } 21 return stack.length ? false:true 22 };
第二次
var isValid = function (s) { const n = s.length; if (n % 2 === 1) { return false; } const pairs = new Map([ [')', '('], [']', '['], ['}', '{'] ]); const stk = []; for(let i = 0; i < n; i++){ if(pairs.has(s[i])){ if(pairs.get(s[i]) !== stk[stk.length - 1] ){ return false }else{ stk.pop() } } else{ stk.push(s[i]) } } return !stk.length; };
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步