20. Valid Parentheses


💡 に答える

var isValid = function (s) {
  let stack = [];

  for (let i = 0; i < s.length; i++) {
    if (s[i] === '(') stack.push(')');
    else if (s[i] === '{') stack.push('}');
    else if (s[i] === '[') stack.push(']');
    else {
      if (s[i] !== stack.pop()) return false;
    }
  }
  console.log('stack: ', stack);

  return stack.length === 0;
};

let s = '{[]}';
isValid(s);

📝 整理する


stackに関する問題を練習しています.問題の要件は、カッコが正しく閉じられているかどうかを判別することです.次の例を見ればわかります.

問題は、小かっこ、大かっこ、角かっこの3つです.

  • 左かっこが発生した場合、同じ形状の右かっこstackpush配列に使用される.

  • 上記のコードの最後のelse文は、括弧を閉じる場合の条件のみであり、s[i]stack.pop()と異なる場合は、括弧の順序がinValidであることを示す.ではfalseをそのままreturnと書けばいいです

  • 最後に有効な括弧であれば、これまでstackに入った要素の個数とstack.pop()の回数は同じである.したがって、カッコが有効な場合、stackは常に空の配列になります.
  • 修正、指摘を歓迎します!

    質問リンク


    https://leetcode.com/problems/valid-parentheses/

    LeetCode GitHub


    https://github.com/tTab1204/LeetCode