重複除外


Pythonアルゴリズムインタビュー21。重複除外


今週の問題の中で一番難しい問題です。


鄭氏と一緒にPythonアルゴリズムのインタビューを解いた時、今週一番難しい問題だったようだ.まず、問題を理解するのに多くの時間を費やしました.사전식 순서はその名の通り、辞書の中で最も早く見つかった順序です.この問題では、重複除外条件が追加されました.そのため、繰り返すかどうかによって、順序を調整する部分が難しくなります.

2.問題の概念


問題の核心概念は
  • 文字列内、カウント文字数、
  • スタックを使用して、現在のテキストと比較します.
  • スタック:出力する文字を格納するスペース.
  • セット(HashSet):文字が重複しているかどうかを確認するためのスペースです.
  • スタック要素消去条件
  • 現在の文字は、スタック文字(現在の文字
  • の後に貼り付けたい文字がある場合(count>0)、スタック要素を削除します.
  • 3. Code


    HashMap(カウンタ)とHashSet(繰り返しチェック)を使用して問題を解く
    int[]とアクセス(繰り返しチェック)を使用して問題に答える
    両方のコードの論理は同じですが、設定を宣言して重複要素を決定し、boolean[]を使用します.実行時間を確認した後,先ほど述べた手順で5 ms,1 msを測定した.booleanのtrue/false値によって、サブロジックの進行の有無が異なるため、時間効率が異なる場合があります.明日私は鄭東志と一緒にDiscussionをして、原因を勉強します.

    [原句]質問を挿入しながら聞き出したもの。


  • Collections.頻度(オブジェクトの集合インスタンス、所望のオブジェクトを含む):オブジェクトがコレクションに何回現れたかを返す関数.

  • Map method
  • putIfAbsent(key,value):キー値が存在しない場合に追加(key,value)
  • ComputeIfPresent(K,BiFunctionremappingFunction):鍵が存在する場合、この関数を実行します.

  • python:Collections.Counters(s):文字列内の文字数を統計する関数

  • Javaで実現する場合は、HashMapで実現!
  •    Map<Chracter, Integer> map = new HashMap<>();
    
       for(char c : s.toCharArray()) {
          map.putIfAbsent(c, 1);
          map.computeIfPresent(c, (k,v) -> v + 1);
       }