目次
このメソッドでは、指定された文字列の考えられるすべてのサブシーケンスを検索します。次に、文字列の左右の回転が同じかどうかを確認します。再帰的方法を使用して、考えられるすべてのサブシーケンスを見つけます。
「maxLen」グローバル変数をゼロに初期化し、左回転と右回転で同じ最長のサブシーケンスの長さを格納します。
方法 2
ここでは、上記の方法を最適化しました。サンプル入力の解を観察できます。サブシーケンスの左回転と右回転が同じになるのは、サブシーケンスに同じ文字が含まれるか、2 つの異なる文字が交互に含まれ、長さが偶数である場合のみです。
ホームページ バックエンド開発 C++ C++ プログラム: 左右の回転が同じで最も長い数値の部分列を検索します。

C++ プログラム: 左右の回転が同じで最も長い数値の部分列を検索します。

Aug 30, 2023 pm 01:33 PM
番号 最長の ローテータシーケンス

C++ プログラム: 左右の回転が同じで最も長い数値の部分列を検索します。

この問題では、左右の回転が同じ場合のサブシーケンスの最大長を見つける必要があります。左回転とは、文字列内のすべての文字を左に移動し、最初の文字を末尾に移動することを意味します。右回転とは、すべての文字列文字を右に移動し、最後の文字を先頭に移動することを意味します。

問題ステートメント – 数値を含む文字列 str が与えられ、同じ左右の回転で最大長のサブシーケンスを見つける必要があります。

###例###

入力

-str="323232",

出力

– 6

説明

- 左右の回転が同じ場合の最長のサブシーケンスは「323232」です。左に回転すると「232323」、右に回転すると「232323」になります。

入力

-str = '00010100'

出力

– 6

説明

– 同じ左右の回転を持つ最長のサブシーケンスは「000000」です。

入力

-str = '092312110431010'

出力

– 6

説明

– 同じ左右の回転を持つ長さ 6 のサブシーケンスが 2 つ考えられます。 1 つ目は「010101」、2 つ目は「101010」です。 方法1

このメソッドでは、指定された文字列の考えられるすべてのサブシーケンスを検索します。次に、文字列の左右の回転が同じかどうかを確認します。再帰的方法を使用して、考えられるすべてのサブシーケンスを見つけます。

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

「maxLen」グローバル変数をゼロに初期化し、左回転と右回転で同じ最長のサブシーケンスの長さを格納します。

  • isRightSameLeft() 関数を定義して、文字列の左回転と右回転が同じかどうかを確認します。

  • 関数内で、substr() メソッドを使用して文字列を左右に回転します。
    • getAllSubSeq() 関数は、指定された文字列の考えられるすべてのサブシーケンスを検索するために使用されます。
  • 基本ケースを定義します。 str が空の場合、サブシーケンスを取得し、isRightSameLeft() 関数を実行して、サブシーケンスの左右の回転が同じかどうかを確認します。その場合、「maxLen」変数の長さが「maxLen」の現在の値より大きい場合は、その値を更新します。

  • 「str」から最初の文字を削除し、「out」文字列を追加した後、再帰呼び出しを行います。

  • 最初の文字を削除し、「out」文字列を変更しないままにした後、別の再帰関数呼び出しを実行します。この再帰呼び出しでは、「str」の最初の文字を除外します。

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

    時間計算量 - O(N*2N)。ここで、左右の回転を比較するには O(N)、考えられるすべてのサブシーケンスを見つけるには O(2N) を使用します。

  • スペースの複雑さ - 余分なスペースを使用しないため、O(1)。

方法 2

ここでは、上記の方法を最適化しました。サンプル入力の解を観察できます。サブシーケンスの左回転と右回転が同じになるのは、サブシーケンスに同じ文字が含まれるか、2 つの異なる文字が交互に含まれ、長さが偶数である場合のみです。

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

2 つのネストされたループを使用して、任意の 2 つの数値を結合します。

'cnt' 変数を定義して、2 つの数値を交互に含む部分列の長さを見つけ、それをゼロに初期化します。

    次の文字が i 番目の文字であるべきか j 番目の文字であるべきかを追跡するために、ブール型の「最初の」変数を定義します。
  • ループを使用して文字列を走査します。
  • first == true かつ str[k] - '0' == I の場合、'first' の値を交互に変更し、'cnt' を 1 ずつ増分します。
  • first == false かつ str[k] - '0' == j の場合、'first' の値を再度交互に変更し、'cnt' を 1 ずつ増分します。
  • i と j が等しくなく、「cnt」の値が奇数の場合は、1 ずつ減分します。
  • cnt 値が "res" より大きい場合は、"res" 変数の値を更新します。
  • ###例### リーリー ###出力### リーリー
  • 時間計算量 - O(10*10*N)。数値の組み合わせを含む文字列から部分列を見つけるためです。
  • 空間の複雑さ - O(1)。動的空間を使用しないためです。

  • このチュートリアルでは、同じ左右の回転を含む最長のサブシーケンスを見つける 2 つの方法を説明します。最初の方法は単純な方法です。この方法は非常に時間がかかり、大量の入力には使用できません。
  • 2 番目の方法は最適化されており、その時間計算量は O(N) にほぼ等しいです。

以上がC++ プログラム: 左右の回転が同じで最も長い数値の部分列を検索します。の詳細内容です。詳細については、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)

小紅書がビデオを公開した時間を確認するにはどうすればよいですか?動画の投稿にかかる最長時間はどのくらいですか? 小紅書がビデオを公開した時間を確認するにはどうすればよいですか?動画の投稿にかかる最長時間はどのくらいですか? Mar 21, 2024 pm 04:26 PM

ライフスタイル共有プラットフォームとして、Xiaohongshu では、自分のビデオ コンテンツを公開し、他のユーザーと日常生活を共有することを選択するユーザーが増えています。多くのユーザーはビデオを投稿するときに問題に遭遇するかもしれません。自分または他の人がビデオを投稿した時間を確認するにはどうすればよいですか? 1.Xiaohongshuがビデオをリリースした時間を確認するにはどうすればよいですか? 1. 動画を投稿した時間を確認する 動画を投稿した時間を確認するには、まず小紅書アプリを開いて個人アカウントにログインする必要があります。個人ホームページのインターフェイスの下部に「作成」というオプションがあり、クリックして入力すると、「ビデオ」という列が表示されます。ここでは、公開されているすべてのビデオのリストを参照し、いつ公開されたかを簡単に確認できます。各動画の右上に「詳細を見る」ボタンがあります。

iOS 17: スタンバイモードでiPhoneの時計スタイルを変更する方法 iOS 17: スタンバイモードでiPhoneの時計スタイルを変更する方法 Sep 10, 2023 pm 09:21 PM

スタンバイは、iPhone が充電器に接続され、水平 (または横) 向きになっているときにアクティブになるロック画面モードです。これは 3 つの異なる画面で構成されており、そのうちの 1 つは全画面表示されます。時計のスタイルを変更する方法については、この記事を読んでください。 StandBy の 3 番目の画面には、垂直にスワイプできるさまざまなテーマで時刻と日付が表示されます。一部のテーマでは、温度や次のアラームなどの追加情報も表示されます。時計を押し続けると、デジタル、アナログ、ワールド、ソーラー、フローティングなどのさまざまなテーマを切り替えることができます。 Float はカスタマイズ可能な色の大きなバブル数字で時間を表示します。Solar はさまざまな色の太陽フレアのデザインを備えたより標準的なフォントを持ち、World は世界を強調表示して表示します。

ラップトップで 1 ~ 9 の数字を入力できない場合はどうすればよいですか? ラップトップで 1 ~ 9 の数字を入力できない場合はどうすればよいですか? Feb 23, 2023 pm 05:19 PM

ラップトップで 1 ~ 9 の数字を入力できないのは、設定の問題が原因です。解決策は次のとおりです: 1. 「win+r」を押してファイル名を指定して実行を開き、cmd と入力して Enter を押します; 2. コマンド プロンプト インターフェイスで、次のように入力します。 osk を押して Enter キーを押します; 3. 仮想キーボードの「オプション」をクリックし、「テンキーをオンにする」にチェックを入れます; 4. 「numlock キー」を有効にします。

JavaScript で乱数と文字列を生成する JavaScript で乱数と文字列を生成する Sep 02, 2023 am 08:57 AM

乱数や英数字の文字列を生成する機能は、多くの状況で役立ちます。これを使用して、ゲーム内のさまざまな場所に敵や食べ物をスポーンできます。これを使用して、ユーザーにランダムなパスワードを提案したり、ファイルを保存するためのファイル名を作成したりすることもできます。 PHP でランダムな英数字文字列を生成する方法に関するチュートリアルを書きました。この投稿の冒頭で、真にランダムなイベントはほとんどないと述べましたが、乱数や文字列の生成にも同じことが当てはまります。このチュートリアルでは、JavaScript で擬似ランダムな英数字文字列を生成する方法を説明します。 JavaScript での乱数の生成 まずは乱数を生成してみましょう。最初に思い浮かぶメソッドは Math.random() です。これは浮動小数点を返します。

数値を小数点以下 n 桁に四捨五入する C++ プログラム 数値を小数点以下 n 桁に四捨五入する C++ プログラム Sep 12, 2023 pm 05:13 PM

数値を出力として表現することは、どの言語でプログラムを作成する場合でも興味深い、重要な作業です。整数型 (short、long、または Medium 型のデータ) の場合、出力として数値を表すのは簡単です。浮動小数点数 (float または double 型) の場合、特定の小数点以下の桁数に四捨五入する必要がある場合があります。たとえば、52.24568 を小数点以下 3 桁で表現したい場合は、前処理が必要です。この記事では、浮動小数点数を四捨五入して特定の小数点以下の桁数に表現するいくつかのテクニックを紹介します。さまざまなアプローチの中でも、C に似たフォーマット文字列を使用すること、precision 引数を使用すること、および数学ライブラリのround() 関数を使用することが重要です。一つずつ見ていきましょう。と

C++ を使用して N 番目の非平方数を見つけるコードを作成する C++ を使用して N 番目の非平方数を見つけるコードを作成する Aug 30, 2023 pm 10:41 PM

私たちは皆、2、3、5、7、8 など、数の 2 乗ではない数字を知っています。非正方形の数は N 個あり、すべての数を知ることは不可能です。そこで、この記事では、平方なしまたは非平方数と、C++ で N 番目の非平方数を見つける方法についてすべて説明します。 N 番目の非平方数 数値が整数の 2 乗である場合、その数値は完全平方と呼ばれます。完全平方数の例としては、-1issquareof14issquareof29issquareof316issquareof425issquareof5 などがあります。数値がどの整数の平方でもない場合、その数値は非正方形と呼ばれます。たとえば、最初の 15 個の非平方数は -2、3、5、6 です。

PHPのis_numeric()関数を使用して数値かどうかを確認します PHPのis_numeric()関数を使用して数値かどうかを確認します Jun 27, 2023 pm 05:00 PM

PHP プログラミング言語では、is_numeric() 関数は非常によく使用される関数で、変数または値が数値かどうかを判断するために使用されます。実際のプログラミングでは、ユーザーが入力した値が数値型であるかどうかを検証する必要がある場合が多く、この場合には is_numeric() 関数を使用して判定することができます。 1. is_numeric() 関数の概要 is_numeric() 関数は、変数または値が数値であるかどうかを検出するために使用される関数です。変数または値が数値の場合は true を返します

C++ を使用して、範囲内のどの数値でも割り切れない数値を検索します。 C++ を使用して、範囲内のどの数値でも割り切れない数値を検索します。 Sep 13, 2023 pm 09:21 PM

この記事では、2 から 10 までのどの数値でも割り切れない 1 から n (指定された) までの数値を見つける問題について説明します。いくつかの例でこれを理解しましょう - 入力:num=14出力:3説明:Therearethreenumbers,1,11,and13,thatarenotdivisible.Input:num=21Output:5説明:Therearefivenumbers1,11,13,17,and19,thatarenotdivisible. 解決済み シンプルなメソッド if

See all articles