長さ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