[CodeKata]Day8. かっこの順序を確認


質問する


sは、複数の括弧からなるStringパラメータである.
true/false、sが有効かどうかを返してください.
「(」、「)」、「[」、「]」、「{」、「}」の6種類があります.
次の場合に有効です.
かっこを開始するには、同じカッコで終了します.
かっこの順序は正しいです.
例:
s = "()"
return true

s = "()[]{}"
return true

s = "(]"
return false 

s = "([)]"
return false

s = "{[]}"
return true

クレヨンしんちゃん


結果...クレヨンしんちゃんを半日試してみましたが、
承玉のヒントを聞いて、また解けた.
まず、{,(,[左方向と},),]右方向のオブジェクトを分離し、入力値sを開き、左方向に空の配列に入ります.
その後、次の右方向に入ると、配列の最後の括弧と入ったばかりの右方向の集合が正しい場合は、配列から削除されます.
砲口が終わった後、アレイに何もなければtrueに戻ります.

結果

function isValid(s) {
  // 여기에 코드를 입력해주세요.
  const left = {
    "{": 0,
    "[": 1,
    "(": 2,
  };
  const right = {
    "}": 0,
    "]": 1,
    ")": 2,
  };
  let stack = [];
  console.log(s.length);
  if (!(s.length % 2 === 0)) {
    //길이가 홀수이면 참일수없으니
    return false;
  }
  for (let letter of s) {
    // console.log(letter);
    if (Object.keys(left).indexOf(letter) > -1) {
      stack.push(letter);
    } else {
      if (stack.length < 1) {
        //  '}}' 요렇게 들어오는 경우 대비
        return false;
      }
      let finalLeft = stack[stack.length - 1];
      if (left[finalLeft] === right[letter]) {
        stack.pop();
      }
    }
  }
  // console.log(stack.length > 0);
  return stack.length > 0 ? false : true;
}

console.log(isValid("))"));

新学

  • の空の配列では、.push() .pop()の後ろから充填が始まり、後ろから削除が始まります.
  • この面倒は符号化文法より難しい...ナビゲーションが困難です!次に類似の問題が発生した場合、ハズア
  • を一度に解決します.