今日のアルゴリズム: 文字列内の隣接する重複をすべて削除する

今日のアルゴリズム: 文字列内の隣接する重複をすべて削除する

[[419471]]

小文字で構成される文字列 S が与えられた場合、重複削除操作は隣接する 2 つの同一文字を選択して削除します。

重複排除操作は、重複排除が実行できなくなるまで S 上で繰り返し実行されます。

すべての重複削除操作が完了した後の最終文字列を返します。答えは必ず一意になります。

例:

  1. 入力: 「abbaca」  
  2. 出力: "ca"  
  3. 説明する:
  4. たとえば、 「abbaca」では、2 つの文字が隣接していて同じであるため、 「bb」を削除できます。これは、現時点で削除できる唯一の重複です。すると、文字列「aaca」が取得されますが、そのうち「aa」のみが重複排除できるため、最終的な文字列は「ca」になります

ヒント:

  1. <= 長さ <= 20000
  2. S は小文字の英語のみで構成されます。

解決策: スタックの使用

解決方法: 文字列をトラバースし、1 つずつスタックにプッシュします。スタックにプッシュするときに、スタックの先頭要素と一致しているかどうかを判断します。一致している場合、つまり 2 つの要素が同じで隣接している場合は、スタックの先頭要素をポップアウトする必要があり、現在の要素をスタックにプッシュする必要はありません。

解決手順: 文字列を走査し、スタックの先頭文字を取り出し、現在の文字がスタックの先頭文字と一致しているかどうかを判断します。

  • 矛盾しており、先頭の文字がスタックにプッシュされ、現在の文字がスタックにプッシュされます
  • スタック ヘッド文字は現在の文字と同じであり、それに隣接しています。どちらの文字もスタックにプッシュする必要はなく、次のトラバーサルを直接実行できます。

トラバーサルが完了したら、スタック内の文字列を返します。

コード実装:

  1. const removeDuplicates =関数(S) {
  2. スタック = []
  3. (c of S)の場合{
  4. prev = stack.pop() とします。
  5. if(前 !== c) {
  6. スタック.push(前)
  7. スタックをプッシュする(c)
  8. }
  9. }
  10. スタックの結合( ' ' )を返す
  11. };
  • 時間計算量: O(n)
  • 空間計算量: O(n

<<:  ハイテク大手の新たな戦場:ロボットの時代が始まる

>>:  人工知能の台頭によりプログラマーは消滅するのでしょうか?

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

人工知能とビッグデータが心理学の分野に参入

人工知能とビッグデータの時代の到来により、心理学の研究に新たな扉が開かれました。人工知能は心理学実験...

2026年までに、AIを活用したARアプリケーションのユーザー数は2億人を超える

ABI Research は、2026 年までに、何らかの形で人工知能 (AI) を活用した拡張現実...

ソフトウェア開発における人工知能: 自動化と最適化

最先端技術である人工知能(AI)は、さまざまな分野で大きな可能性を見せています。ソフトウェア開発の分...

声を上げてください! MakeItTalkの魔法でモナリザと会話できる

最近、マサチューセッツ大学アマースト校のヤン・チョウ博士とそのチームは、「MakeItTalk」と呼...

多くの競争者が競い合う中、自動運転をめぐる戦いが始まる!

著者: 張傑[51CTO.comより引用] 2020年と比べると、2021年の自動運転業界にはよりエ...

機械学習と感度分析を組み合わせてビジネス戦略を策定するにはどうすればよいでしょうか?

数え切れないほど多くの企業が、意思決定を支援するために機械学習 (ML) を日常的に使用しています。...

Recast.AIでチャットボットを作成する

[[355279]] 2018 年 2 月の Gartner レポートによると、「2020 年までに...

機械学習ツールが肺のX線スキャンで心不全を予測

この研究は、MIT のコンピューター科学および人工知能研究所 (CSAIL) で実施され、医療診断を...

センスタイムは香港証券取引所に上場し、最悪の時期から脱却した。

【51CTO.comオリジナル記事】著者: 張傑本日2021年12月30日、SenseTimeの2...

機械学習システムの弱点: 保護が必要な 5 つの理由

[[345683]]日々の努力の究極の目的は、生活をより楽に、より便利にすることです。これが人類の歴...

...

ついに誰かがROSロボットオペレーティングシステムをわかりやすく説明しました

01 ROS入門多くの初心者は、ロボットのオペレーティングシステムと聞いて、「オペレーティングシス...

ナレッジグラフ|データの価値を活かすのは「グラフ」

ナレッジグラフ|データの価値を活かすのは「グラフ」​​ナレッジグラフは、応用数学、グラフィックス、情...

openKylinオペレーティングシステムが正式に発表され、ビッグモデルに接続し、音声アシスタントとデスクトッププラグインを提供します

9月21日、openKylinオペレーティングシステムは今晩、ビッグモデルへのアクセスを正式に発表し...

...