使用 C++ 按字典順序列印長度為 M 的所有獨特的環形字串
在本問題中,給定一個字串和一個整數 M。我們的任務是按字典順序(字母順序)列印所有長度為 M 的獨特的環形字串。
讓我們舉一個例子來理解這個問題,
Input: str= “ssssn” M=3 Output: nss sns ssn sss
說明 − 所有長度為 3 的可能的環形字串是:sss sss ssn sns nss。按字典順序排序後的唯一元素為 sss ssn sns nss。
為了解決這個問題,我們將在字串的元素上進行迭代,並生成所有長度為 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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
JavaScript
PHP