ホームページ バックエンド開発 C++ 文字が部分文字列と同じであり、頻度の差が最大 K である最長の部分列

文字が部分文字列と同じであり、頻度の差が最大 K である最長の部分列

Sep 09, 2023 am 09:09 AM
キャラクター 頻度 子序列

文字が部分文字列と同じであり、頻度の差が最大 K である最長の部分列

この問題では、連続する文字が含まれ、すべての文字の頻度の差が K を超えないようなサブシーケンスの最大長を見つけます。

出力を取得するには、指定された文字列の考えられるすべてのサブシーケンスを検索し、その中に各文字が連続して最大の頻度差で含まれているかどうかを確認する必要があります。

問題ステートメント- 小文字のアルファベット文字を含む文字列 alpha が与えられています。さらに、正の整数 K が与えられています。次の規則に従うように、指定された文字列のサブシーケンスの最大長を見つける必要があります。

  • 特定の文字はすべて連続して出現する必要があります。

  • 文字の頻度の差が K を超えることはできません。

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

説明 - 「pppqrs」サブシーケンスを取得できます。最大文字頻度は 3 で、最小文字頻度は 1 です。したがって、その差は2となります。そして、すべての文字が連続して含まれます。

######入力###### リーリー ######出力###### リーリー

説明 - 「abbbc」サブシーケンスを取得できます。

######入力###### リーリー ######出力###### リーリー

説明 - 「nnnnnnn」サブシーケンスを取得できます。

方法1 このメソッドでは、再帰関数を使用して、指定された長さのすべてのサブシーケンスを検索します。さらに、サブシーケンスにすべての文字が連続して含まれているかどうかを確認する関数を定義します。マップ データ構造を使用して、最大および最小の周波数差を計算します。

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

ステップ 1 - 文字の頻度を保存する「f」マッピングを定義します。

ステップ 2 - start が一時文字列の長さに等しく、文字列の長さが 0 より大きい場合は、次の手順に従います。

ステップ 3 - 「minf」変数と「maxf」変数を初期化して、最小周波数と最大周波数を保存します。

ステップ 4 - マップをクリアし、各文字の頻度をマップに保存します。

ステップ 5 - マップ値をループし、周波数の最大値と最小値を見つけます。

ステップ 6 - 最大頻度と最小頻度の差が K 以下の場合は、文字列に連続した文字が含まれているかどうかを確認します。

ステップ 6.1

- checkForContinously() 関数で、特定の文字の最後の位置を保存する「pos」マップを定義します。

ステップ 6.2

- 文字列をトラバースします。現在のキャラクターがマップ内に存在し、キャラクターの現在位置と最後の位置の差が 1 未満の場合は、最後の位置を更新します。それ以外の場合は false を返します。

ステップ 6.3

- キャラクターが存在しない場合は、マップにキャラクターを追加します。

ステップ 6.4

- 最後に true を返します。

ステップ 7

- 文字列に連続した文字が含まれており、頻度の差が K 未満で、「maxi」の値が現在のサブシーケンスの長さより小さい場合は、「maxi」の値を更新します。 '。

ステップ 8

- 現在の文字を除外した後、再帰呼び出しを行います。

ステップ 9

- 現在の文字を一時文字列の末尾に追加します。また、更新された「tmp」文字列を使用して再帰呼び出しを実行します。 ###例### リーリー ###出力### リーリー 時間計算量 - O(N*2N)。O(N) は連続文字のチェックに使用され、O(2N) はすべてのサブシーケンスの検索に使用されます。

スペースの複雑さ - 一時的なサブシーケンスを保存するには O(N)。 簡単な方法を使用して、指定された文字列のすべてのサブシーケンスを検索します。ただし、これには非常に時間がかかります。大きな文字列の問題を解決するためにこの方法を使用することはお勧めできません。

以上が文字が部分文字列と同じであり、頻度の差が最大 K である最長の部分列の詳細内容です。詳細については、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)

パフォーマンス、メモリ周波数、またはタイミングに大きな影響を与えるのはどれですか? パフォーマンス、メモリ周波数、またはタイミングに大きな影響を与えるのはどれですか? Feb 19, 2024 am 08:58 AM

メモリはコンピュータの最も重要なコンポーネントの 1 つであり、コンピュータのパフォーマンスと安定性に大きな影響を与えます。メモリを選択するとき、人は 2 つの重要なパラメータ、つまりタイミングと周波数に注目する傾向があります。では、メモリのパフォーマンスに関しては、タイミングと頻度のどちらがより重要でしょうか?まず、タイミングと頻度の概念を理解しましょう。タイミングとは、メモリ チップがデータを受信して​​処理するのに必要な時間間隔を指します。通常はCL値(CASLatency)で表され、CL値が小さいほどメモリの処理速度が速くなります。周波数は範囲内です

Java の Character.isDigit() 関数を使用して、文字が数字かどうかを判断します Java の Character.isDigit() 関数を使用して、文字が数字かどうかを判断します Jul 27, 2023 am 09:32 AM

文字が数字かどうかを判断するには、Java の Character.isDigit() 関数を使用します。文字はコンピュータ内部で ASCII コードの形式で表されます。各文字には対応する ASCII コードがあります。このうち、0~9の数字に対応するASCIIコードの値は、それぞれ48~57となります。文字が数値かどうかを判断するには、Java の Character クラスによって提供される isDigit() メソッドを使用できます。 isDigit() メソッドは Character クラスに属します

Wordで矢印を入力する方法 Wordで矢印を入力する方法 Apr 16, 2023 pm 11:37 PM

オートコレクトを使用して Word で矢印を入力する方法 Word で矢印を入力する最も速い方法の 1 つは、定義済みのオートコレクト ショートカットを使用することです。特定の一連の文字を入力すると、Word はそれらの文字を矢印記号に自動的に変換します。この方法を使用すると、さまざまな矢印スタイルを描画できます。 Word でオートコレクトを使用して矢印を入力するには: 矢印を表示する文書内の位置にカーソルを移動します。次の文字の組み合わせのいずれかを入力します。 入力した文字を矢印記号に修正したくない場合は、キーボードのバックスペース キーを押してください。

Microsoft Excel で上付き文字と下付き文字の書式設定オプションを適用する方法 Microsoft Excel で上付き文字と下付き文字の書式設定オプションを適用する方法 Apr 14, 2023 pm 12:07 PM

上付き文字は、通常のテキスト行の少し上に設定する必要がある、文字または数字の 1 つまたは複数の文字です。たとえば、1st と書く必要がある場合、st の文字は 1 の文字より少し高い位置にある必要があります。同様に、下付き文字は文字のグループまたは単一の文字であり、通常のテキスト レベルよりわずかに低く設定する必要があります。たとえば、化学式を書くときは、通常の文字行の下に数字を配置する必要があります。次のスクリーンショットは、上付き文字と下付き文字の書式設定の例をいくつか示しています。難しい作業のように思えるかもしれませんが、テキストに上付き文字と下付き文字の書式を適用するのは実際には非常に簡単です。この記事では、上付き文字または下付き文字を使用してテキストを簡単に書式設定する方法をいくつかの簡単な手順で説明します。この記事を楽しんで読んでいただければ幸いです。 Excelで上付き文字を適用する方法

iPhone や Mac で度記号などの拡張文字を入力するにはどうすればよいですか? iPhone や Mac で度記号などの拡張文字を入力するにはどうすればよいですか? Apr 22, 2023 pm 02:01 PM

物理キーボードまたは数字キーボードでは、表面上に提供される文字オプションの数が限られています。ただし、iPhone、iPad、Mac ではアクセント付き文字や特殊文字などにアクセスする方法がいくつかあります。標準の iOS キーボードを使用すると、大文字、小文字、標準の数字、句読点、文字にすばやくアクセスできます。もちろん他にもたくさんのキャラクターがいます。発音記号を含む文字から逆さまの疑問符まで選択できます。隠れた特殊文字を見つけてしまったかもしれません。そうでない場合は、iPhone、iPad、Mac でアクセスする方法を次に示します。 iPhone および iPad で拡張文字にアクセスする方法 iPhone または iPad で拡張文字を取得するのは非常に簡単です。 「お知らせ」には「

matplotlibで中国語の文字を表示する正しい方法 matplotlibで中国語の文字を表示する正しい方法 Jan 13, 2024 am 11:03 AM

matplotlib で中国語の文字を正しく表示することは、多くの中国人ユーザーがよく遭遇する問題です。デフォルトでは、matplotlib は英語フォントを使用するため、中国語の文字を正しく表示できません。この問題を解決するには、正しい中国語フォントを設定し、それを matplotlib に適用する必要があります。以下は、matplotlib で中国語の文字を正しく表示するのに役立ついくつかの具体的なコード例です。まず、必要なライブラリをインポートする必要があります: importmatplot

ASUS TUF Z790 PlusはASUS MCP79メモリ周波数と互換性があります ASUS TUF Z790 PlusはASUS MCP79メモリ周波数と互換性があります Jan 03, 2024 pm 04:18 PM

ASUS tufz790plus はメモリ周波数をサポート ASUS TUFZ790-PLUS マザーボードは、デュアルチャネル DDR4 メモリをサポートし、最大 64GB のメモリをサポートする高性能マザーボードです。そのメモリ周波数は非常に強力で、最大 4800MHz です。サポートされる具体的なメモリ周波数には、2133MHz、2400MHz、2666MHz、2800MHz、3000MHz、3200MHz、3600MHz、3733MHz、3866MHz、4000MHz、4133MHz、4266MHz、4400MHz、4533MHz、4600MHz、4733MHz、4800MHzが含まれます。 。日常使用でも、高パフォーマンスのニーズでも

ddr4の周波数を確認する方法 ddr4の周波数を確認する方法 Feb 01, 2024 am 09:42 AM

ddr4 メモリ スティックがコンピュータに与える最大の影響は周波数ですが、多くのユーザーは周波数の確認方法を知りませんが、実際には、CPU ソフトウェアを通じて周波数を確認でき、あらゆる情報が詳細に表示されます。 ddr4 の周波数を確認する方法: 1. まずソフトウェアで確認する必要がありますが、CPU-z を使用して確認できます。 2.完了したら、それを開いて「メモリ」をクリックします。 3. このとき、下に「周波数」が表示されます。

See all articles