プログラマJSペアリングの削除


今回の問題はペアリング排除です.
前後の文字が同じ問題は削除できます.
「baabaa」があれば、初めてbとaを比較すると違います.
2番目のファクタに移動
2番目のaは3番目のaと同じで、ペアで取り除くことができます.
削除すると、前から比較を再開できます.同じ場合は削除できます.
bbaa、bb、aaはすべて取り除くことができます
全部取れたら、1回か0回でいいです.

第1回の解


最初の試合では単純に前後比較を行い,打たれた場合はそれをクリアし,前から再チェックするという論理が考えられる.前述の問題から再帰関数を学習し,再帰関数の使用を考えるようになった.
これは2級の少数を探す問題で、確かに難しいです.後で解くために、まだブログに書いていません.再帰関数で解いてみたところ、無限ループの攻撃に当たった.
多くの崩壊を経て、もう一度問題を解いてみても、他の方法が思いつかないので、ヒントを探しました.
ヒントはスタックとキューで問題を解くことです...

二次解


スタックとキューが理解され、適用されます.
  • 文字を別々に比較する必要があります.スタックと呼ばれる配列を作成します.
    配列が空の場合、または次の順序の文字と比較して異なる場合は、配列に保存します.
  • 配列中の文字と次の順序の文字が同じであれば、配列中の文字は削除される.
  • コードを見てください.
    function solution(s)
    {
    	let stack = [];
      for(let i=0; i<s.length;i++){
        let cue = s.slice(i,i+1)
    
        if(!stack.length||stack[stack.length-1]!==cue){
          stack.push(cue)
        }else{
          stack.pop()
        }
      }
     return stack.length?0:1
    }
    問題の解決はかなり簡単だ.
    このような考え方でどのように急速に近づくかをチェックすべきだが、まだ足りないようだ.
    もう一つの考えは,アルゴリズム問題も最終的には技術(スタック,キュー)になり,ブロック感があるということである.技法によって解くべきだと思いますが、定式化されているようです.
    盲目的に公式を解くのではなく、できるだけ早く公式を学ぶには、これらの公式に代入する能力が必要です.
    これは次も解決しなければならない問題のようだ.