目次
このメソッドでは、str1 を反復して複数のサブシーケンスを検索し、結果の文字列に追加します。
長さ 26 の「arr」配列を定義し、すべての要素を 0 に初期化して、文字の存在を str1 に格納します。
方法 2
このメソッドでは、マッピングとコレクションのデータ構造を使用して、上記のメソッドの効率を向上させます。問題を解決するロジックは上記と同じです。
ホームページ バックエンド開発 C++ 文字列 A を追加して文字列 B を取得するために必要な最小限のサブシーケンスを追加します。

文字列 A を追加して文字列 B を取得するために必要な最小限のサブシーケンスを追加します。

Sep 10, 2023 pm 02:41 PM
子序列 得る

文字列 A を追加して文字列 B を取得するために必要な最小限のサブシーケンスを追加します。

この問題では、str1 のサブシーケンスを使用して str2 を構築する必要があります。この問題を解決するには、str2 の最大長の部分文字列をカバーするような str1 の部分列を見つけることができます。ここでは、問題を解決する 2 つの異なる方法を学びます。

問題ステートメント 長さの異なる 2 つの文字列 str1 と str2 が与えられています。次の条件に従って、str1 から str2 を構築する必要があります。

  • str1 から任意のサブシーケンスを選択し、それを新しい文字列 (最初は空) に追加します。

str2 を構築するために必要なオペランドの最小数を返し、str2 を構築できない場合は -1 を出力する必要があります。

###例###

入力

– str1 = "acd"、str2 = "adc"

出力

– 2

イラスト

    str1 の最初のサブシーケンスは「ad」です。したがって、文字列は「ad」になる可能性があります。
  • その後、str1 から "c" サブシーケンスを取得し、それを "ad" に追加して "adc" にします。
入力

– str1 = "adcb"、str2 = "abdca"

出力

– 3

イラスト

    最初のサブシーケンスは str1 の「ab」です。
  • その後、「dc」文字列を取得でき、結果の文字列は「abdc」になります。
  • 次に、「a」サブシーケンスを使用して、最終的な文字列「abdca」を生成します。
  • 方法1

このメソッドでは、str1 を反復して複数のサブシーケンスを検索し、結果の文字列に追加します。

###アルゴリズム###

長さ 26 の「arr」配列を定義し、すべての要素を 0 に初期化して、文字の存在を str1 に格納します。

  • str1 を繰り返し、文字の ASCII 値に従って配列要素の値を更新します

  • 「last」変数を定義し、-1 で初期化して、最後にアクセスした要素を追跡します。さらに、操作回数を格納する変数「cnt」を定義し、0に初期化します。

  • ループを使用して str2 を走査し始めます。

  • 現在の文字が str1 にない場合は、-1 を返します。

  • 「最後の 1」値を使用して「j」変数を初期化します。

  • while ループを使用して、j の値が len 未満になり、str1[j] が文字

  • と等しくなるまで繰り返します。
  • 「j」の値が「len」より大きい場合、「str1」を走査します。 「cnt」変数の値を増やし、「str1」を再度繰り返す必要があるため「last」を -1 に初期化し、現在の文字を再度考慮する必要があるため「I」の値を 1 減らします。使用を続けます。 「継続」キーワードを繰り返します。

  • 「last」変数の値を「j」に更新します。

  • ループのすべての反復が完了した後、「cnt 1」を返します。ここでは、最後の操作を考慮していないため、「cnt」に「1」を追加する必要があります。

  • ###例### リーリー ###出力### リーリー

    時間計算量 – O(N*M)、N は str2 の長さ、M は str1 の長さです。

  • 動的空間を使用しないため、空間の複雑さ - O(1)。

方法 2

このメソッドでは、マッピングとコレクションのデータ構造を使用して、上記のメソッドの効率を向上させます。問題を解決するロジックは上記と同じです。

###アルゴリズム###

「chars_mp」を定義して、char ->sets{} をキーと値のペアとして保存します。

マッピングでは、str1 文字列に特定の文字が存在するインデックス セットを格納します。

    「last」変数と「cnt」変数を定義する
  • str2 のトラバースを開始します。現在の文字インデックスを含むコレクションのサイズが 0 の場合、-1 が返されます。
  • 現在の文字インデックス セットの「最後」の上限を見つけます。
  • 上限が見つからない場合は、「cnt」の値を 1 つ増やし、「last」を -1 に設定し、「I」の値を 1 つ減らして、Continue キーワードを使用します。
  • 「最後の」変数の値を更新します。
  • ループの反復が完了したら、「cnt」変数の値を返します
  • p> ###例### リーリー ###出力### リーリー

  • 時間計算量

    – str2 を反復処理してループ内の「最後の」インデックスの上限を見つけるため、O(N*logN)。

  • 空間複雑度

    – マップを使用して文字インデックスを保存するため、O(N)。

以上が文字列 A を追加して文字列 B を取得するために必要な最小限のサブシーケンスを追加します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

クリムゾンアビスオブウォーダブルパミシュ・ルシアの入手方法 クリムゾンアビスオブウォーダブルパミシュ・ルシアの入手方法 Mar 25, 2024 pm 05:31 PM

プレイヤーはバトル ダブル パミッシュでプレイするときにルシアのクリムゾン アビスを入手できます。多くのプレイヤーはルシアのクリムゾン アビスの入手方法を知りません。プレイヤーは研究開発を通じて入手するか、ファントム ペイン ケージ ストアで引き換えることができます。バトルダブルパミシュ ルチア クリムゾンアビスのR&D入手方法 1.ベースカードプール、テーマ限定カードプール、デスティニー限定カードプールのR&Dシステムから抽選で入手できます 2.これらのカードプールで公開されますシア・クリムゾン・アビスの基本ドロップ率は1.50%ですが、カードプールからルシア・クリムゾン・アビスを引くとドロップ率が1.90%にアップします。ファントム ペイン ケージ ストアでの引き換え 1. プレイヤーは、ファントム ペイン ケージ ストアでファントム ペイン スカーを使用して、ルシア クリムゾン アビスのフラグメントを引き換えることができます。 2.毎週最大 30 個のフラグメントを引き換えることができます。

Win11システムで管理者権限を取得する方法 Win11システムで管理者権限を取得する方法 Mar 08, 2024 pm 10:00 PM

管理者権限により、ユーザーはソフトウェアのインストールやシステム設定の変更など、システム内のさまざまな操作を実行できるため、Win11 システムで管理者権限を取得することは非常に重要です。 Win11 システムで管理者権限を取得するには、次の方法があります。 1 つ目の方法は、ユーザー アカウント制御設定を使用する方法です。 Win11システムでは、ユーザーアカウント制御とはユーザーの権限を管理する機能であり、ユーザーはこれを介して権限レベルを調整できます。管理者権限を取得するには、ユーザーは「設定」インターフェイスに入り、「

Golang 文字列が指定された文字で終わるかどうかを判断する方法 Golang 文字列が指定された文字で終わるかどうかを判断する方法 Mar 12, 2024 pm 04:48 PM

タイトル: Golang で文字列が特定の文字で終わるかどうかを判断する方法 Go 言語では、文字列が特定の文字で終わるかどうかを判断する必要があることがあります。これは文字列を処理するときに非常に一般的です。この記事では、Go 言語を使用してこの関数を実装する方法と、参考用のコード例を紹介します。まず、Golang で文字列が指定された文字で終わるかどうかを判断する方法を見てみましょう。 Golang の文字列内の文字はインデックス作成によって取得でき、文字列の長さは次のようになります。

PHPでint型をstringに変換する方法を詳しく解説 PHPでint型をstringに変換する方法を詳しく解説 Mar 26, 2024 am 11:45 AM

PHPでint型をstring型に変換する方法を詳しく解説 PHPの開発では、int型をstring型に変換する必要に遭遇することがよくあります。この変換はさまざまな方法で実現できますが、この記事では、読者の理解を深めるために、具体的なコード例とともに、いくつかの一般的な方法を詳しく紹介します。 1. PHP の組み込み関数 strval() を使用する PHP には、さまざまな型の変数を文字列型に変換できる組み込み関数 strval() が用意されています。 int型をstring型に変換する必要がある場合、

Go言語で文字列をインターセプトする方法 Go言語で文字列をインターセプトする方法 Mar 13, 2024 am 08:33 AM

Go 言語は、文字列インターセプトを含む豊富な文字列処理機能を提供する強力で柔軟なプログラミング言語です。 Go 言語では、スライスを使用して文字列をインターセプトできます。次にGo言語で文字列をインターセプトする方法を具体的なコード例を交えて詳しく紹介します。 1. スライスを使用して文字列をインターセプトする Go 言語では、スライス式を使用して文字列の一部をインターセプトできます。スライス式の構文は次のとおりです。slice:=str[start:end]where, s

python_python の繰り返し文字列チュートリアルで文字列を繰り返す方法 python_python の繰り返し文字列チュートリアルで文字列を繰り返す方法 Apr 02, 2024 pm 03:58 PM

1. まず pycharm を開いて、pycharm ホームページに入ります。 2. 次に、新しい Python スクリプトを作成し、右クリックして [新規] をクリックし、[Pythonfile] をクリックします。 3. 文字列、コード: s="-" を入力します。 4. 次に、文字列内のシンボルを 20 回繰り返す必要があります (コード: s1=s*20)。 5. 印刷出力コード、コード: print(s1) を入力します。 6. 最後にスクリプトを実行すると、下部に戻り値が表示されます。 - 20 回繰り返しました。

PHPで16進数を文字列に変換するときに中国語が文字化けする問題を解決する方法 PHPで16進数を文字列に変換するときに中国語が文字化けする問題を解決する方法 Mar 04, 2024 am 09:36 AM

PHP で 16 進数の文字列を変換するときに中国語の文字化けを解決する方法. PHP プログラミングでは、16 進数で表された文字列を通常の中国語の文字に変換する必要がある状況に遭遇することがあります。しかし、この変換の過程で、場合によっては中国語の文字化けが発生することがあります。この記事では、PHPで16進数を文字列に変換する際に中国語が文字化けする問題を解決する方法と、具体的なコード例を紹介します。 16 進数の変換には hex2bin() 関数を使用します。PHP の組み込み hex2bin() 関数は 1 を変換できます

エルドンのリングトレットの入手方法 エルドンのリングトレットの入手方法 Mar 11, 2024 am 11:40 AM

トレットはゲーム「エルデンズ サークル」の精霊馬です。多くのプレイヤーはエルデンズ サークルのトレットの入手方法を知りません。トレットを召喚するには、プレーヤーはショートカット バーに装備されている精霊馬の笛を入手する必要があります。その後、次のコマンドを使用します。精霊馬トレットを召喚するショートカットキー。エルドンの指輪の塔を入手するには? 答え: 精霊馬の笛を入手する必要があります。 1. トレットを召喚するには、精霊の馬笛を入手する必要があります。 2. 初心者誕生地点から嵐の道前の祝福地点まで行き、焚き火のそばに座るとヒロイン【メリナ】が現れ、【精霊馬笛】の指輪をくれます。 3. ショートカットバーに「精霊馬の笛」を装備し、精霊馬の笛を使用すると、ソレットの馬の魂を呼び出すことができます。 4.精霊馬トーレットに乗ると二段ジャンプができるようになりますが、歩きながらはジャンプできますが、ジャンプはできません。

See all articles