C++での整然としたキュー
文字列Sがあるとします。Sのすべての文字は小文字です。その後、いくつでも移動できます。
ここでは、各移動で、最初のK文字の1つを選択して削除し、文字列の最後に配置します。任意の数の移動の後に持つことができる辞書式順序で最小の文字列を見つける必要があります。
したがって、入力が「cabaa」のようで、K =3の場合、出力は「aaabc」になります
これを解決するには、次の手順に従います-
-
K> 1の場合、-
-
配列Sを並べ替える
-
Sを返す
-
-
ret:=S
-
n:=Sのサイズ
-
初期化i:=1の場合、i
-
S:=Sの最初の文字を切り取り、最後にSに追加します
-
S
-
ret =S
-
-
-
retを返す
理解を深めるために、次の実装を見てみましょう-
例
#include <bits/stdc++.h> using namespace std; class Solution { public: string orderlyQueue(string S, int K) { if(K > 1){ sort(S.begin(), S.end()); return S; } string ret = S; int n = S.size(); for(int i = 1; i < n; i++){ S = S.substr(1) + S.substr(0, 1); if(S < ret) ret = S; } return ret; } }; main(){ Solution ob; cout << (ob.orderlyQueue("cabaa", 3)); }
入力
"cabaa", 3
出力
aaabc
-
C /C++での優先キューの紹介
優先度キューは、割り当てられた優先度に従って要素が挿入または削除されるタイプのキューです。優先度は0〜10の範囲の整数値であり、0は最も優先度の高い要素を示し、10は次の要素を示します。最も低い優先度。優先キューを実装するために従うべき2つのルールがあります- 優先度が最も高いデータまたは要素は、優先度が最も低いデータまたは要素の前に実行されます。 2つの要素の優先度が、順番に実行される要素と同じである場合、それらはリストに追加されます。 スタック、キュー、リンクリストなどの優先キューを実装するために使用できる複数のデータ構造があります。この記事では、キューのデータ構造について説明しま
-
C++キューを使用してBSTのパスを逆にする
たとえば、二分探索木が与えられ、特定のキーからそのパスを逆にする必要があります。 解決策を見つけるためのアプローチ このアプローチでは、キューを作成し、ルートを取得するまですべてのノードをプッシュします。 例 #include <bits/stdc++.h> using namespace std; struct node { int key; struct node *left, *right; }; struct node* newNode(int item){ struc