隣接する 2 つの文字が異なるように文字列内の文字を再配置します。C++ で実装されています。
文字列が与えられます。これが str であると仮定すると、長さは任意の値にすることができます。タスクは、結果の文字列内で隣接する同一の文字が並ばないように、指定された文字列を再配置することです。
さまざまな入出力シナリオを見てみましょう:
入力 - String str = "itinn"
出力 -隣接する 2 つの文字が異なるように文字列内の文字を並べ替えます。結果は次のようになります: initn。
説明 - 文字列型の変数が str であると仮定して与えられます。ここで、同じ位置に 2 つの同一の文字が表示されないように、入力文字列の文字を再配置します。つまり、「nn」を隣接しない位置に移動します。最終的な結果は次のとおりです 文字列は 'initn' になります。
Input - String str = "abbaabbaa"
Output - string 内の文字を並べ替えて、次のようにします。隣接する文字が異なります: ababababa
説明 - str であると仮定して、文字列型の変数が与えられます。次に、2 つの同じ文字が同じ位置に表示されないように、入力文字列の文字を再配置します。つまり、これらは同じで隣接しているため、'bb'、'aa'、'bb'、'aa' を移動します。したがって、最後の文字列は「ababababa」になります。
以下のプログラムで使用するメソッドは次のとおりです。
文字列型の変数を str として入力し、文字列のサイズを計算して格納します。名前は長さの変数です。
長さが 0 であるかどうかを確認してから戻ります。
データを関数 Rearrangement(str, length) に渡します。
-
関数内 Rearrangement(arr, length)
文字列のサイズを (長さ 1)/2 に設定します。
整数型データを格納するベクトル型変数 vec(26, 0) と文字列型ポインタ ptr(length, ‘ ‘) を宣言します。また、整数型、値 0 の一時変数 temp を宣言します。
FOR のループを開始して str を反復します。ループ内で、 vec[it - ‘a’] を設定します。
文字型変数 ch を作成し、maximum(vec) 関数の呼び出し結果を設定します。
整数型変数 total を宣言し、vec[ch - ‘a’] に設定します。
合計がサイズより大きいかどうかを確認し、戻ります。
total WHILE でループを開始し、ptr[temp] を ch に設定し、temp を temp 2 に設定し、total を 1 減らします。
vec[ch - 'a'] を 0 に設定します。 i が 26 未満になるまで、i から 0 まで FOR のループを開始します。ループ内で while ループを開始し、vec[i] が 0 より大きい場合、temp を (temp >= length) ? 1: temp に設定し、ptr[temp] を 'a' i に設定し、temp を temp 2 に設定します。 、vec[i]を1減算します。
- #Return ptr
- 関数内 char minimum(const Vector
& vec) - 整数型変数 high を宣言して 0 に設定し、文字型変数 c を宣言します。
- i が 26 未満になるまで、i から 0 まで FOR のループを開始します。ループ内で、vec[i] が high より小さいかどうかを確認し、high を vec[i] に設定し、c を 'a' i に設定します。 #c
結果を出力します。 - 例
#include <bits/stdc++.h> using namespace std; char maximum(const vector<int>& vec){ int high = 0; char c; for(int i = 0; i < 26; i++){ if(vec[i] > high){ high = vec[i]; c = 'a' + i; } } return c; } string Rearrangement(string str, int length){ int size = (length + 1) / 2; vector<int> vec(26, 0); string ptr(length, ' '); int temp = 0; for(auto it : str){ vec[it - 'a']++; } char ch = maximum(vec); int total = vec[ch - 'a']; if(total > size){ return ""; } while(total){ ptr[temp] = ch; temp = temp + 2; total--; } vec[ch - 'a'] = 0; for(int i = 0; i < 26; i++){ while (vec[i] > 0){ temp = (temp >= length) ? 1 : temp; ptr[temp] = 'a' + i; temp = temp + 2; vec[i]--; } } return ptr; } int main(){ string str = "itinn"; int length = str.length(); if(length == 0){ cout<<"Please enter a valid string"; } string count = Rearrangement(str, length); if(count == ""){ cout<<"Please enter a valid string"; } else{ cout<<"Rearrangement of characters in a string such that no two adjacent are same is: "<<count; } return 0; }
出力
上記のコードを実行すると、次の出力が生成されます
Rearrangement of characters in a string such that no two adjacent are same is: initn
以上が隣接する 2 つの文字が異なるように文字列内の文字を再配置します。C++ で実装されています。の詳細内容です。詳細については、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)

ホットトピック









この記事では、母音をそれぞれのインデックスでアルファベット順に並べ替えることによって、C++ で指定された文字列を変更する方法について説明します。また、この問題を解決するために使用される方法についても説明し、テストケースを含む例を示します。問題文 文字列を指定して、それぞれのインデックスの母音をアルファベット順に並べ替えます。文字列内の子音は元の順序を維持する必要があります。たとえば、文字列「tutorialspoint」を指定すると、出力は「tatiriolspount」となるはずです。方法 この問題は、簡単なアルゴリズムを使用して解決できます。まず、指定された文字列内のすべての母音をそれぞれの順序で含む別の文字列を作成します。次に、その文字列をアルファベット順に並べ替えることができます。やっと、

2 つの文字列が与えられており、i 番目のインデックスで一方の順列が他方の順列よりも大きな文字を持つことができるように、指定された文字列の順列が存在するかどうかを確認する必要があります。文字列をソートし、文字列内の各文字を 1 つずつ比較することで、この問題を解決できます。あるいは、2 つの文字列の文字頻度を使用して問題を解決することもできます。問題ステートメント - 長さ N の文字列 str1 と str2 が与えられています。辞書編集的に一方が他方よりも大きくなるような文字列の順列があるかどうかを確認する必要があります。これは、すべての順列の i 番目のインデックスに、別の文字列順列の i 番目のインデックスの文字よりも大きい文字が含まれている必要があることを意味します。入力例 -str1="

文字列の操作は、さまざまな問題解決シナリオにおいて重要です。指定された文字列の順列は、隣接する文字の数よりも多くの文字の数を最適化することがわかりました。これは、文字列の文字を再配置して、できるだけ多くの隣接する文字のペアを生成する必要がある興味深いパズルです。左側は右側の文字より小さいです。方法 最大文字数が直接隣接する文字数よりも大きい文字列の順列を解決するには、いくつかの方法があります。方法 1 - バックトラッキングとプルーニング - 方法 2 - 動的プログラミング - 方法 3 - ヒープ アルゴリズム - 方法 4 - プルーニングを使用した辞書順序 - 方法 1: バックトラッキングとプルーニング バックトラッキング アルゴリズムを使用して、文字列のすべての順列を生成します。各ステップで、現在の配置に、これまでに見つかった最大値を超える隣接する文字よりも多くの文字が含まれているかどうかを確認します。そうでない場合は早めに剪定しましょう

文字列、たとえば str が与えられます。長さは任意の値にすることができます。タスクは、結果の文字列内で隣接する同一の文字が並ばないように、指定された文字列を再配置することです。さまざまな入出力シナリオを見てみましょう。 入力 - 文字列 str="itinn" 出力 - 隣接する 2 つの文字が異なるように文字列内の文字を再配置します。結果は initn になります。説明 -文字列型の変数が与えられており、それが str であると仮定します。次に、入力文字列の文字を次のように再配置します。

任意の長さの文字列 'str' が与えられます。ここでのタスクは、指定された入力文字列に文字を追加または削除せずに、出力が回文文字列になるように文字を再配置することです。回文文字列とは、文字が最初から最後まで同じように聞こえるように配置されているものです。このためのさまざまな入出力シナリオを見てみましょう - 入力 - String str="itnin" 出力 - 可能であれば回文文字列を形成するための文字の再配置は次のとおりです: nitin 説明 - String 型の変数が与えられ、 str であると想定されます。次に、入力文字列の文字を次のように再配置します。

任意のサイズの正の整数型の配列、たとえば arr[] があります。ここでのタスクは、要素と隣接する要素を乗算し、結果の要素をすべて加算したときに最小の合計が返されるように配列を再配置することです。さまざまな入力と出力の状況を見てみましょう: 入力 -intarr[]={2,5,1,7,5,0,1,0} 出力 -連続するペアの積である合計を最小化するように配列を並べ替えます。要素の説明: 70505121 - サイズ 8 の整数の配列があります。ここで、配列 70505121 を再配置します。最小合計が 7*0+5*0+5 として返されるかどうかを確認します。

この質問では、配列要素に対して指定されたクエリを実行します。クエリには、配列要素の左回転、右回転、更新のループが含まれています。問題を解決するための論理的な部分は、配列の回転です。配列を左に回転する簡単な方法は、各要素を次の要素に置き換え、最後の要素を最初の要素に置き換えることです。 deque データ構造を使用すると、配列を効率的に回転できます。問題ステートメント - 整数値を含む arr[] 配列が与えられています。さらに、K 個のクエリを含む request[] 配列が与えられます。次のルールに従って、requests[] で指定された各クエリを arr[] 配列要素に対して実行する必要があります。 {0} - 配列に対して循環左回転を実行します。 {1)-配列を丸で囲みます

win10システムのスタートメニューのプログラムを並べ替えるにはどうすればよいですか?あまりご存じない方も多いと思いますが、並び替えの方法が分からない方のために、win10のスタートメニューのプログラムを並び替える設定方法を以下のエディターにまとめましたので、ご興味があればどうぞ。編集者をフォローして以下をご覧ください。 ! win10 システムでスタート メニューのプログラムを並べ替える方法 1. この機能を使用するには、システムをバージョン win1010156 に更新します; 2. スタート メニュー アイコンをクリックし、[すべてのアプリ] をクリックします; 3. スタート メニューにすべてのプログラムを入力しますをクリックし、上部の [&] アイコンをクリックすると、並べ替え順序を設定する場所に入ることができます; 4. 頭文字または文字を選択します。
