[Code Kata] Week 2 - Day 3


質問する


sは、複数の括弧からなるStringパラメータである。true/false、sが有効かどうかを返してください。


「(」、「)」、「[」、「]」、「{」、「}」の6種類があります.次の場合に有効です.かっこを開始するには、同じカッコで終了します.かっこの順序は正しいです.
例:
s = "()"
return true

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

s = "(]"
return false

s = "([)]"
return false

s = "{[]}"
return true

Code


まず括弧をキーと値に分けますので分けます.
function isValid(s) {
  const bracket = {
    '(': ')',
    '{': '}',
    '[': ']'
  }
 }
しかし、どんなに時間が流れても感覚が見つからないので、googlingではreduceやslice、pop、pushを使ってこの機能を実現することができます.
function isValid(s) {
  const bracket = {
    '(': ')',
    '{': '}',
    '[': ']'
  }
  
  const remained = s.split('').reduce((ac, cv, i, arr) => {
  
   if (bracket[ac.slice(-1)] === cv) {
      ac.pop();
    } else {
      ac.push(cv)
    }
    
    console.log(ac)
    return ac;
    
  }, []);
  
  return remained.length === 0;
}
  • 」(「冒頭は反対側」)があれば、いつか会えるでしょう.
  • したがって、
  • は、新しい配列に対の括弧を格納し、オブジェクトキー値を使用して最近入力された括弧の逆括弧を取得すると、新しい配列の括弧を削除する.
  • は、パラメータとして括弧を揃えると[]に出力される.
  • reduceは、配列内の要素をコールバック関数で積算できる関数です.reduceが入力したパラメータの結果長が0の場合、trueが出力され、カッコ内のすべての一致が存在することを示します.
  • if文に遭遇する前とif文に遭遇した後にコンソールログに配置すると、このように操作されます.