数据结构题目1 判断括号是否准确闭合

js

具体思路,让左括号( { [ 放入栈中,放完之后  取出栈顶元素 如果在map结构中存在,则正确闭合否则返回false; 

// 比较灵巧的是用了map数据结构检测是否闭合  不比用对象了,方便很多
function isValid(s) {
    const stack = [];
    let myMap = new Map([[')', '('], [']', '['], ['}', '{']]);
    for(let i = 0, c; i < s.length - 1, c = s[i];i++) {
        if(!myMap.has(c)) {
            stack.push(c);
        }
        else if(stack.length === 0 || myMap.get(c) !== stack.pop()) {
            return false;
        }
    }
    return stack.length === 0;
}

const leftToRight = {
  "(":")",
  "{": "}",
  "[": "]"  
}
// 思路是 最开始肯定先出现左括号, 让左边括号,对应的右括号入栈,然后对比之后的右括号,如果一样就从栈里面pop出来,如果栈为空,那么说明是闭合的;
let isValid = (s) => {
  let stack = [];
  let len = s.length;  
  for(let i = 0;i<len;i++){
     let str = s[i]
     if('(' === str || '{' === str || '[' === str){
          stack.push(leftToRight[str])
     }else{
          if(!stack.length || str !== stack.pop()){
               return false
          }
     }
  }
  return !stack.length;
}