バイナリ文字列内の等しくない文字とインデックスの文字ペアを交換することによって、文字列が回文文字列を形成できるかどうかをチェックします
###############問題文###
文字列 str とバイナリ文字列 B があります。両方の文字列の長さは N に等しくなります。文字列 B 内に等しくない文字を含むインデックスのペアでその文字を複数回交換することで、文字列 str を回文文字列にできるかどうかを確認する必要があります。
###入力### リーリー ###出力### リーリー
説明
の中国語訳は次のとおりです:説明
B[1] と B[2] は等しくないため、str[1] と str[2] を交換できます。最後の文字列は「ASA」にすることができます。
###入力### リーリー ###出力### リーリー説明
の中国語訳は次のとおりです:説明
文字列 B には等しくない文字が含まれていないため、文字列を回文にすることはできません。
###入力### リーリー ###出力### リーリー説明
の中国語訳は次のとおりです:説明
文字頻度が一致しないため、文字列 str を回文にすることはできません。
方法 1
最初のメソッドでは、文字列 str のすべての文字を使用して回文文字列を作成できるかどうかを確認します。そうである場合、文字列 B 内の異なる文字を含むインデックス ペアの文字を交換して、文字列を回文にできるかどうかを確認できます。それ以外の場合は false を返します。
###アルゴリズム###ステップ 1
-utility() 関数を実行し、指定された条件に従って文字を交換し、文字の交換によって文字列が回文になるかどうかを判断します。
ステップ 2
- canBePalindromic() 関数を定義して、str の文字を使用して回文文字列を構築できるかどうかを確認します。
ステップ 2.1
-文字列 str の各文字とその頻度を保存するマップを作成します。 for ループを使用して文字列を反復処理し、文字の頻度をカウントします。
- ステップ 2.2
- 偶数と奇数の頻度を持つ文字の数を数えます。
- ステップ 2.3
- set を使用して、文字列内の一意の文字の合計数を取得します。
- ステップ 2.4
-文字列の長さが奇数で、奇数の頻度で文字が 1 つだけ含まれている場合は true を返します。
- ステップ2.5
-文字列の長さが偶数の場合、偶数の頻度を持つすべての文字と、奇数の頻度を持つ0文字はtrueを返します。
- ステップ2.6
-falseを返します。
- ステップ 3
- 文字列が回文にならない場合は、false を返します。
- ステップ 4
- 文字列 B に複数の「1」と「0」が含まれる場合は true を返し、それ以外の場合は false を返します。
###例### リーリー ###出力### リーリー 時間計算量 - O(NlogN)。for ループを使用して文字列を走査し、set の insert() メソッドに (logN) 時間がかかるためです。
空間複雑度 - O(K)、K は一意の文字の総数です。
-
方法 2 このメソッドでは、マップを使用する代わりに、配列を使用して文字の頻度を保存します。
###アルゴリズム###
- 長さ 26 の 'charFrequancy' 配列を作成し、ゼロに初期化します。
ステップ 2 - 文字列 B 内の 1 と 0 の合計数を数えます。
ステップ 3 - 配列内の各文字の頻度を更新します。
- 文字列の長さが偶数で、奇数の頻度がゼロでない場合は、false を返します。
- ステップ 5
- 文字列の長さが奇数で、奇数の頻度が 1 より大きい場合は、false を返します。
- ステップ 6
- 文字列に 1 と 0 の両方が存在する場合は true を返します。
- ステップ 7
- false を返します。
###例### リーリー ###出力### リーリー 時間計算量 - for ループを使用して文字列を反復処理するため、O(N)。
空間複雑度 - 常に長さ 26 の配列を使用するため、O(1)。
-
###結論は###
与えられた条件に基づいて文字を交換することで、文字列が回文になるかどうかを確認する 2 つの方法を学習しました。最初の方法ではコレクションとマップを使用しますが、2 番目の方法では配列のみを使用してデータを保存します。 2 番目の方法は、コレクションにデータを挿入するのに insert() メソッドでは O(logn) 時間がかかるのに対し、配列では O(1) 時間しかかからないため、最初の方法よりも優れています。
以上がバイナリ文字列内の等しくない文字とインデックスの文字ペアを交換することによって、文字列が回文文字列を形成できるかどうかをチェックしますの詳細内容です。詳細については、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)

ホットトピック









Linux システムでは、特にシステムのメモリが少ない場合に、スワップ スペースが重要な役割を果たします。これは、システムがスムーズに動作し、高負荷下でも安定性を維持できるようにするバックアップ メモリの保存スペースとして機能します。この記事では、システムのパフォーマンスが最適化され、さまざまなワークロードを処理できるようにするために、Ubuntu 22.04LTS にスワップ領域を追加するための詳細なガイドを提供します。スワップ スペースについて スワップ スペースは、システムの物理 RAM を補足するために使用される仮想メモリを提供します。システムの RAM が不足すると、カーネルはメモリ不足やシステムのクラッシュを防ぐためにデータをディスクにスワップします。 Linux システムは通常、この状況に対処するためにスワップ領域を使用します。メモリを大量に消費する複数のアプリケーションを同時に実行して、非常に大きなファイルやデータを処理します。

行列は、行と列に配置された数値の 2 次元配列です。 Python には行列を表すデータ型がありませんが、ネストされたリストまたは NumPy 配列を行列として使用できます。行列の最初と最後の列要素を交換する方法については、次の入力シナリオと出力シナリオを参照してください。入出力シナリオ リストのリストを使用して表現された 3X3 行列があると仮定します。出力行列は、最初と最後の列要素を交換した結果の行列になります。入力行列:[1,3,4][4,5,6][7,8,3]出力行列:[4,3,1][4,5,6][3,8,7]別の行列を考えてみましょう行と列が等しくない行列。入力行列:

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

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

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 - なしの符号付き整数 (マシンのサイズとバイト順序に依存します)

nxn 行列があるとします。行列の各要素は一意であり、1 から n2 までの整数です。これで、次の操作を任意の数および順序で実行できるようになります。行列内の任意の 2 つの整数 x と y を選択します。ここで (1≤x)

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

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