バイナリ文字列内の最長の非増加サブシーケンス
この問題では、指定された文字列の最長の非増加サブシーケンスを見つける必要があります。
非増加とは、文字が同じか降順であることを意味します。バイナリ文字列には「0」と「1」のみが含まれるため、結果の文字列は「1」で始まり「0」で終わるか、「0」または「1」で始まり「1」で終わる必要があります。
この問題を解決するには、文字列の各位置で接頭辞「1」と接尾辞「0」を数え、接頭辞「1」と接尾辞「0」の最大合計を求めます。
問題文 - バイナリ文字列 str が与えられています。指定された文字列から最長の非増加サブシーケンスを見つける必要があります。
###例### リーリー リーリーイラスト
最長の非増加サブシーケンスは「1100」です。
リーリー リーリーイラスト
最長の非増加サブシーケンスは「111000」です。
リーリー リーリーイラスト
最長の非増加サブシーケンスは '00000000' で、これは指定された文字列と同じです。
方法1
このメソッドでは、インデックスごとにプレフィックス「1」とサフィックス「0」の数を配列に保存します。その後、両方の配列の同じインデックスから値を取得し、それらを加算して、最大合計を見つけます。
###アルゴリズム###ステップ 1
- - pre1s 配列と suffix0s 配列を定義して、プレフィックス 1 とサフィックス 0 を保存します。さらに、すべての配列要素を 0 に初期化します。
-
-
-
-
-
-
-
-
-
-
###例### 入力 '010100' の場合、プレフィックス配列は [0, 1, 1, 2, 2, 2]、サフィックス 0 配列は [4, 3, 3, 2, 2, 1] です。合計配列は [4, 4, 4, 4, 4, 1] となり、合計配列の最大値は 4 になります。したがって、答えは4となります。
リーリー ###出力### リーリー 時間計算量 - O(N)、プレフィックス 1 とサフィックス 0 で配列を初期化する必要があるため。
空間複雑度 - プレフィックス 1 とサフィックス 0 を配列に格納するため、O(N)
方法 2この方法では、まずゼロの合計数を数えます。その後、文字列の反復処理を開始し、「1」を数え続け、0 が見つかった場合は「0」ずつ減分します。さらに、各反復で 0 と 1 のカウントを加算し、結果の最大値を見つけます。
###アルゴリズム###
ステップ 1
- 「count1」、「count0」、および「res」変数を定義し、0 で初期化して、カウント 1、0、および最終結果をそれぞれ保存します。
ステップ 2
- - 文字列をループして「count0」変数に保存することで、ゼロの合計数をカウントします。
-
-
-
-
-
###例### リーリー ###出力### リーリー 時間計算量 - O(N)。文字列内のゼロの合計数を数え、文字列を走査して最長の部分列を見つけるためです。
空間の複雑さ - O(1) -
###結論は###
ここでは、両方の方法の時間計算量は同じですが、空間計算量が異なります。 2 番目の方法ではコードを最適化するときに定数スペースを使用しますが、最初の方法では動的スペースを使用してプレフィックス 1 とサフィックス 0 の合計数を保存します。
以上がバイナリ文字列内の最長の非増加サブシーケンスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

この問題では、0 と 1 で構成される文字列が与えられており、1 から始まるすべての順列の合計数を見つける必要があります。答えは膨大な数になる可能性があるため、1000000007 を法にして出力します。 Input:str="10101001001"Output:210Input:str="101110011"Output:56 いくつかの組み合わせ数学を適用し、いくつかの式を設定することで、この問題を解決します。解決方法 この方法では、0 と 1 の数を数えます。ここで、n が文字列に現れる 1 の数、m が文字列に現れる 0 の数であると仮定します。

この問題では、指定された文字列の最長の非増加サブシーケンスを見つける必要があります。非増加とは、文字が同じか降順であることを意味します。バイナリ文字列には「0」と「1」のみが含まれるため、結果の文字列は「1」で始まり「0」で終わるか、「0」または「1」で始まり「1」で終わる必要があります。この問題を解決するには、文字列の各位置で接頭辞「1」と接尾辞「0」を数え、接頭辞「1」と接尾辞「0」の最大合計を求めます。問題ステートメント - バイナリ文字列 str が与えられています。指定された文字列から最長の非増加サブシーケンスを見つける必要があります。例 入力 – str="010100"出力 – 4 は、最長の非再帰を示しています。

Pack() 関数は、データをバイナリ文字列にパックします。構文 Pack(format,args) パラメータ format - 使用する形式。可能な値は次のとおりです - a - NUL 埋め込み文字列 A - スペース埋め込み文字列 h - 16 進数文字列、下位ニブルが最初 H - 16 進数文字列、上位ニブルが最初 c - 符号付き文字 C - 符号なし文字 s - 符号付き short (常に 16 ビット) 、マシンバイトオーダー) S - 符号なし short (常に 16 ビット、マシンバイトオーダー) n - unsigned short (常に 16 ビット、ビッグエンディアンバイトオーダー) v - unsigned short (常に 16 ビット、リトルエンディアンバイトオーダー) i - 符号付き整数(マシンのサイズとバイト順序に依存します) I - なしの符号付き整数 (マシンのサイズとバイト順序に依存します)

問題文 文字列 str とバイナリ文字列 B があります。両方の文字列の長さは N に等しくなります。文字列 B 内に等しくない文字を含むインデックスのペアでその文字を複数回交換することで、文字列 str を回文文字列にできるかどうかを確認する必要があります。例 例 入力 str='AAS' B='101' 出力 'YES' 説明の中国語訳は次のとおりです。 説明 B[1] と B[2] が等しくないため、str[1] と str[2] を交換できます。 。最後の文字列は「ASA」にすることができます。 str=‘AASS’ B=‘1111’ と入力し、「No」を出力します。説明の中国語訳は次のようになります。文字列を回文にすることができないという説明、

同じ長さの 2 つのバイナリ文字列 str1 と str2 が与えられた場合、同じ長さの指定された文字列から部分文字列を選択することによって、指定された関数値を最大化する必要があります。指定された関数は次のようになります - fun(str1,str2)=(len(substring))/(2^xor(sub1,sub2))。ここで、len(substring) は最初の部分文字列の長さ、xor(sub1,sub2) は指定された部分文字列の XOR です。これらはバイナリ文字列であるため、これが可能です。例 Input1:stringstr1=10110&stringstr2=11101Output:3 は、

この記事の目的は、部分文字列を繰り返し連結して形成された長さ N のバイナリ文字列の数を数えるプログラムを実装することです。目標は、指定されたテキストの個々の部分文字列を繰り返し連結することによって、長さ N のバイナリ文字列をいくつ作成できるかを決定することです (N は正の整数)。問題文 部分文字列を繰り返し連結する長さ N のバイナリ文字列の数を数えるプログラムを実装します。例 例 1 入力、N = 3 の出力を考えます。 2 説明の中国語訳は次のとおりです。 説明 以下に、部分文字列が繰り返し連結される、長さ N = 3 の実行可能なバイナリ文字列をリストします。 "000":サブストリング

問題ステートメント バイナリ文字列 str が与えられ、1 の前にすべての 0 を配置できるように文字列から最小限の文字を削除する必要があります。入力例 str=‘00110100111’ 出力 3 の説明 ここでは、2 つの方法で出力 3 を実現できます。 arr[2]、arr[3]、および arr[5]、または arr[4]、arr[6]、および arr[7] を文字列から削除できます。入力 str=‘001101011’ と出力 2 は、arr[4] と arr[6] を削除して、1 の前にすべての 0 を置くことができることを示しています。入力 str=‘000111’ 出力 0 は、指定された文字列内ですべてのゼロが 1 の前に配置されていることを意味するため、最初から開始する必要はありません。
