目次
方法 1: ハッシュマップを使用する
時間と空間の複雑さ
文字列をトラバースするため、上記のコードの時間計算量は O(N) です。ここで、N は文字列のサイズです。
サイズが定数 3 である数値の頻度を保存しているため、上記のコードの空間計算量は O(1) です。
ホームページ バックエンド開発 C++ 指定された文字列が ABC のサブシーケンスにのみ分割できるかどうかを確認します

指定された文字列が ABC のサブシーケンスにのみ分割できるかどうかを確認します

Sep 06, 2023 pm 05:01 PM
診る 文字列の分割 子序列

指定された文字列が ABC のサブシーケンスにのみ分割できるかどうかを確認します

文字列のサブシーケンスは、文字の順序を変更せずに文字列の任意の位置 (0 個以上の要素) から文字を取得できる文字列の一部です。新しい文字列。この問題では、文字列のすべての文字が「A」、「B」、または「C」文字のいずれかである長さ N の文字列が与えられます。私たちの仕事は、文字列がサブシーケンス「ABC」または「Not」にのみ分割できることを見つけることです。文字列がサブシーケンス「ABC」のみに分割されている場合は「yes」を返し、それ以外の場合は「no」を返します。

リーリー

手順 - 分割方法は、次のように文字列を「ABC」の 2 つの部分列に分割します。 -

  • 考えられる方法の 1 つは、インデックス 0、2、および 3 の文字を取得してサブシーケンス "ABC" を形成し、次にインデックス 1、4、および 5 の文字を取得してサブシーケンス "ABC" を形成することです。 。

  • もう 1 つの可能な方法は、インデックス 0、4、5 および 1、2、3 の文字を取得してサブシーケンス "ABC" を形成することです。

したがって、文字列は「ABC」の 2 つのサブシーケンスに分割できます。

リーリー

説明 - インデックス番号 5 にある「A」の場合、その後に「B」はありません。したがって、文字列全体を一意のサブシーケンス「ABC」に分割することはできません。したがって、答えは「いいえ」です。

方法 1: ハッシュマップを使用する

次の 2 つの観察結果があります -

  • 文字列を「ABC」に分割する必要があり、文字「A」、「B」、および「C」の数が等しい必要があるため、文字列のサイズは 3 で割り切れる必要があります。そうしないと条件を満たせません。

  • 文字「A」、「B」、「C」の頻度を数えるとき、「A」の数は「B」の数および「B」の数以上である必要があります。 " は 'C ' カウント以上である必要があります。 A のカウント >= B のカウント >= C のカウント

  • であるため

上記の観察に基づいて、確認する必要がある条件が 3 つあります。

  • 予期される文字列サイズ % 3 == 0。

  • は、A のカウント >= B のカウント >= C のカウントでなければなりません。

  • 最後の条件は freq[ ‘A’ ] == freq[ ‘B’ ] == freq[ ‘C’ ] である必要があります。

指定された文字列「str」内の各文字の頻度を保存する必要があるため、ハッシュ マップを使用してこの問題を解決できます。

次の方法について段階的に説明します -

  • まず、「checkSubsequences」という関数を作成します。この関数は、指定された文字列「str」をパラメータとして受け取り、可能であれば希望の文字列「yes」を返します。それ以外の場合は、戻り値として「no」を返します。 。

  • 関数のすべての手順は次のとおりです-

  • 文字列の長さを格納する変数「len」を作成します。

  • 最初の条件を確認し、長さが 3 で割り切れない場合は「no」を返します。

  • 文字「A」、「B」、「C」の頻度を保存するハッシュ マップを作成します。したがって、空間の複雑さは一定です。

  • for ループを使用して、文字列を 0 から len 未満まで走査します。

    • 文字列の現在の文字数を増やします

    • 2 番目の条件を確認し、「A」のカウントが「B」のカウントより小さい場合、または「B」のカウントが「C」のカウントより小さい場合は、「No」を返します。

      li>
  • for ループの後、最後の 3 番目の条件をチェックし、A のカウントが B のカウントと等しくない場合、または B のカウントが C のカウントと等しくない場合は、「いいえ」を返す必要があります。

  • 最後に、すべての条件が満たされたら、「yes」を返します。

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

時間と空間の複雑さ

文字列をトラバースするため、上記のコードの時間計算量は O(N) です。ここで、N は文字列のサイズです。

サイズが定数 3 である数値の頻度を保存しているため、上記のコードの空間計算量は O(1) です。

###結論は###

このチュートリアルでは、指定された文字列がサブシーケンス ABC にのみ分割できるかどうかを確認するプログラムを実装しました。周波数を保存する必要があったため、ハッシュ法を実装しました。この方法では主に 3 つの条件をチェックします。すべての条件が満たされた場合、文字列を "ABC" の部分列にのみ分割できることを意味します。

以上が指定された文字列が ABC のサブシーケンスにのみ分割できるかどうかを確認しますの詳細内容です。詳細については、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Pythonでアプリケーションが開いているかどうかを確認するにはどうすればよいですか? Pythonでアプリケーションが開いているかどうかを確認するにはどうすればよいですか? Aug 26, 2023 pm 06:49 PM

実行されるプログラムをプロセスと呼びます。プロセスは、現在のオペレーティング システム上で実行されているアプリケーション、またはオペレーティング システムに関連するアプリケーションです。アプリケーションがオペレーティング システムに関連付けられている場合、アプリケーションは最初にそれ自体を実行するプロセスを作成します。他のアプリケーションは実行のためにオペレーティング システム サービスに依存します。ほとんどのアプリケーションは、オペレーティング システム サービスと、オペレーティング システム、ソフトウェア、およびハードウェアを維持するバックグラウンド アプリケーションです。 Python では、アプリケーションが開いているかどうかを確認するさまざまな方法があります。一つずつ詳しく見ていきましょう。 psutil.process_iter() 関数の使用 psutil は、実行中のプロセスとシステム使用率に関する情報を取得するインターフェイスをユーザーに提供する Python のモジュールです。

Python でオブジェクトが反復可能かどうかを確認するにはどうすればよいですか? Python でオブジェクトが反復可能かどうかを確認するにはどうすればよいですか? Aug 25, 2023 pm 10:05 PM

反復可能オブジェクトは、ループまたは反復可能関数を使用してすべての要素を反復できるオブジェクトです。リスト、文字列、辞書、タプルなどはすべて反復可能オブジェクトと呼ばれます。 Python 言語では、オブジェクトが反復可能かどうかを確認するさまざまな方法があります。一つずつ見ていきましょう。ループの使用 Python には 2 つのループ手法があります。1 つは「for」ループを使用し、もう 1 つは「while」ループを使用します。これら 2 つのループのいずれかを使用して、特定のオブジェクトが反復可能かどうかを確認できます。例 この例では、for ループを使用してオブジェクトを反復し、反復されているかどうかを確認します。以下はコードです。 l=["リンゴ",22,"オレンジ

Teams でスペルチェックが機能しない [修正済み] Teams でスペルチェックが機能しない [修正済み] Mar 06, 2024 am 09:10 AM

Teams でスペルチェックが機能しなくなる場合があることに気づき始めました。スペル チェックは効果的なコミュニケーションに不可欠なツールであり、これに対する攻撃はワークフローに重大な混乱を引き起こす可能性があります。この記事では、スペル チェックが期待どおりに機能しない一般的な理由と、スペル チェックを以前の状態に戻す方法について説明します。そのため、Teams でスペル チェックが機能しない場合は、この記事で説明されている解決策に従ってください。 Microsoft のスペルチェックが機能しないのはなぜですか? Microsoft のスペル チェックが正しく機能しない理由はいくつか考えられます。これらの理由には、互換性のない言語設定、スペルチェック機能の無効化、MSTeam または MSOffice のインストールの破損などが含まれます。また、古い MSTeam と MSOf

Windows 11 で SSD の健康状態を確認するにはどうすればよいですか? Win11でSSDの健康状態を確認する方法 Windows 11 で SSD の健康状態を確認するにはどうすればよいですか? Win11でSSDの健康状態を確認する方法 Feb 14, 2024 pm 08:21 PM

Windows 11 で SSD の健康状態を確認するにはどうすればよいですか? SSD は読み取り、書き込み、アクセス速度が速いため、急速に HDD に取って代わりつつありますが、たとえ信頼性が高くても、Windows 11 で SSD の状態をチェックする必要があります。操作方法は?このチュートリアルでは、エディターがその方法を共有します。方法 1: WMIC1 を使用し、Win + R キーの組み合わせを使用して「wmic」と入力し、[OK] を押すかクリックします。 Enter2. 次に、次のコマンドを入力または貼り付けて、SSD の健全性ステータスを確認します: diskdrivegetstatus 「ステータス: OK」メッセージが表示された場合、SSD ドライブは正常に動作しています。

Golang で文字列が特定の文字で始まるかどうかを確認するにはどうすればよいですか? Golang で文字列が特定の文字で始まるかどうかを確認するにはどうすればよいですか? Mar 12, 2024 pm 09:42 PM

Golang で文字列が特定の文字で始まるかどうかを確認するにはどうすればよいですか? Golang でプログラミングする場合、文字列が特定の文字で始まるかどうかを確認する必要がある状況によく遭遇します。この要件を満たすために、Golang の strings パッケージによって提供される関数を使用してこれを実現できます。次に、Golangを使って文字列が特定の文字で始まるかどうかを確認する方法を、具体的なコード例とともに詳しく紹介します。 Golang では、strings パッケージの HasPrefix を使用できます。

JavaでArrayListに特定の要素が含まれているかどうかを確認するにはどうすればよいですか? JavaでArrayListに特定の要素が含まれているかどうかを確認するにはどうすればよいですか? Sep 03, 2023 pm 04:09 PM

List インターフェイスの contains() メソッドを使用して、リストにオブジェクトが存在するかどうかを確認できます。 contains() メソッド booleancontains(Objecto) このリストに指定された要素が含まれる場合、true を返します。より正式には、このリストに (o==null?e==null:o.equals(e)) のような要素 e が少なくとも 1 つ含まれる場合にのみ true を返します。パラメータ c - このリスト内の存在がテストされる要素。戻り値 このリストに指定された要素が含まれている場合は true を返します。 ClassCastException をスローします - 指定された要素の型がこのリストと互換性がない場合 (オプション)。 NullP

指定された年がうるう年かどうかを確認するプログラムを C 言語で作成します。 指定された年がうるう年かどうかを確認するプログラムを C 言語で作成します。 Sep 20, 2023 pm 03:33 PM

閏年は 366 日、平年は 365 日ですが、その年が閏年であるかどうかをプログラムで確認するのが課題です。判定のロジックは、その年が 400 または 4 で割り切れるかどうかをチェックすることで実現できますが、これら 2 つの数字で割り切れない場合は、その年は通常の年になります。例Input-:year=2000Output-:2000isaLeap YearInput-:year=101Output-:101isnotaLeapyear アルゴリズムStartStep1->declarefunctionbooltocheckifyearifaleapyearornotboolcheck(intye

TPP 学生が面接を受ける資格があるかどうかを確認するために使用される Java プログラム TPP 学生が面接を受ける資格があるかどうかを確認するために使用される Java プログラム Sep 06, 2023 pm 10:33 PM

さまざまな企業の適格性基準を知るには、以下の表を参照してください。CGPA の中国語訳は次のとおりです。 GPA 8 つ以上の適格企業 Google、Microsoft、Amazon、Dell、Intel、Wipro 7 つ以上のチュートリアル ポイント、アクセンチュア、 Infosys 、 Emicon、6rtCamp 以上の Rellins、Cyber​​tech、Skybags、Killer、Raymond 以上 5Patronics、Shoes、NoBrokers Java プログラムに入って、tpp 学生の面接適格性を確認しましょう。方法 1: ifelseif 条件を使用する 通常、複数の条件をチェックする必要がある場合に使用します。

See all articles