头图

有效的括号

时间复杂度:O(n),其中 n 是字符串 s 的长度。
空间复杂度:O(n+∣Σ∣),其中 Σ 表示字符集,本题中字符串只包含 6 种括号,∣Σ∣=6。栈中的字符数量为O(n),而哈希表使用的空间为 O(∣Σ∣),相加即可得到总空间复杂度。
  1. 由题意知道匹配括号的流程符合 “ 栈 ” 这种数据结构
  2. 依次将左括号放入栈
  3. 匹配到右括号则出栈
  4. 遍历结束判断栈是否为空

    var isValid = function (s) {
     const n = s.length;
     if (n % 2 === 1) {
         return false;
     }
     const pairs = new Map([
         [')', '('],
         [']', '['],
         ['}', '{']
     ]);
     const stk = [];
     for (let ch of s) {
         if (pairs.has(ch)) {
             if (!stk.length || stk[stk.length - 1] !== pairs.get(ch)) {
                 return false;
             }
             stk.pop();
         } else {
             stk.push(ch);
         }
     };
     return !stk.length;
    };

全栈冲冲冲
1 声望0 粉丝

知识不应该区别国界,每个人生活在这个美好的时代都应该贡献自己的价值,我们国内的程序员工程师都应该多学本职以外的IT知识,不要局限于应用层,让我国的IT行业更加茁壮成长


引用和评论

0 条评论