辞書式順序で最小の文字列回転
解決策は単純です。指定された文字列をそれ自体と連結するだけで、別の配列に文字列のすべての回転が格納されます。その後、配列を昇順で並べ替えると、最小値が最終結果になります。
入力と出力
Input: The String “BCAAFAABCD” Output: Rotated String: “AABCDBCAAF”
アルゴリズム
minStrRotation(str)
入力- 指定された文字列。
出力- 最小限の弦の回転が必要です。
Begin n := length of str define strArr to store all rotations tempStr := concatenate str with str again for i := 0 to n, do strArr[i] := substring of tempStr from (i to n) done sort the strArr return strArr[0] End
例
#include <iostream> #include <algorithm> using namespace std; string minStrRotation(string str) { int n = str.size(); string strArray[n]; //array to store all rotations of str string tempStr = str + str; //concatinate str two times for (int i = 0; i < n; i++) strArray[i] = tempStr.substr(i, n); //get sub string from ith index to nth index sort(strArray, strArray+n); return strArray[0]; //The first index is the result } int main() { string str; cout << "Enter String: "; cin >> str; cout << "Rotated String: " << minStrRotation(str); }
出力
Enter String: BCAAFAABCD Rotated String: AABCDBCAAF
-
文字列がC#の数値であるかどうかを確認するにはどうすればよいですか?
文字列が-であるとしましょう string str = "3456"; 次に、入力した文字列が数字かどうかを確認します- str.All(c => char.IsDigit(c)) 上記は、文字列が数値の場合はtrueを返し、それ以外の場合はfalseを返します。 これが完全なコードです- 例 using System; using System.Linq; namespace Demo { public class MyApplication { public static void Mai
-
Pythonで特定の文字列を構築するための最小コストを決定するプログラム
長さnの文字列strを作成する必要があるとします。文字列を作成するために、2つの操作を実行できます。 コストaでstrの最後に文字を追加できます。 コストrのstrの最後に部分文字列sub_strを追加できます。 文字列strを構築するための最小コストを計算する必要があります。 したがって、入力がa =5、r =4、str =tpointのような場合、出力は29になります。 文字列tpointを作成するためのコストは、以下のとおりです- str = 't'; a new character added, therefore the cost is 5. str = &