長さMのすべての個別の円形文字列をC++で辞書式順序で印刷します
この問題では、文字列と整数Mが与えられます。タスクは、長さMのすべての個別の円形文字列を辞書式順序(アルファベット順)で印刷することです。
問題を理解するために例を見てみましょう
Input: str= “ssssn” M=3 Output: nss sns ssn sss
説明 −長さ3のすべての可能な円形ストリングは次のとおりです。ssssss ssnsnsnss。辞書式順序の異なる要素は、 sss ssnsnsnssです。
この問題を解決するために、文字列の要素を反復処理し、長さMのすべての可能なサブ文字列を生成します。この生成された文字列を、個別の要素のみを格納し、重複を破棄するセットに格納します。これらの要素を辞書式順序で格納します。セットのすべての要素を最初から印刷します。
このアルゴリズムは、サブストリングのサイズとストリングの長さの両方に依存します。時間計算量=O(N * M) 。
例
このコードは、ソリューションの実装を示しています-
#include <bits/stdc++.h> using namespace std; void printCircularString(string s, int l, int m) { set<string> circularString; s = s + s; for (int i = 0; i < l; i++) { circularString.insert(s.substr(i, m)); } while (!circularString.empty()) { cout<<*circularString.begin()<<"\t"; circularString.erase(circularString.begin()); } } int main() { string str = "ssssn"; int N = str.length(); int M = 3; cout<<"All circular strings of length "<<M<<" from the string '"<<str<<"' are:\n"; printCircularString(str, N, M); return 0; }
All circular strings of length 3 from the string 'ssssn' are − nss sns ssn sss
-
C++でブラケット形式の文字列を分割するすべての方法を印刷します
この問題では、文字列が与えられ、それをサブ文字列に分割して、括弧で囲んで印刷する必要があります。 問題をよりよく理解するために、いくつかの例を見てみましょう。 Input : wxyz Output : (w) (x) (y) (z) (w) (x) (yz) (w) (xy) (z) (w) (xyz) (wx) (y) (z) (wx) (yz) (wxy) (z) (wxyz)
-
C ++で1つの文字列を別の文字列にコピーせずに、文字列の配列をソートされた順序で出力します
ある文字列を別の文字列にコピーせずに、並べ替えられた順序で文字列の配列を出力する問題では、文字列の配列を並べ替える必要があります。ここで、プログラマーはソート中に文字列を別の文字列にコピーすることはできません。 概念をよりよく理解するために例を見てみましょう: 例 − Input : {“Delhi”, “Hyderabad”, “Indore”, “Mumbai”, “Banglore”} Output : Banglore, Delhi, Hyderabad, In