Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

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
हैं
  1. C++ में वर्णों की पुनरावृत्ति के साथ सभी क्रमपरिवर्तन प्रिंट करें

    इस समस्या में, हमें n वर्णों की एक स्ट्रिंग दी जाती है और हमें स्ट्रिंग के वर्णों के सभी क्रमपरिवर्तन मुद्रित करने होते हैं। स्ट्रिंग के वर्णों को दोहराने की अनुमति है। क्रमपरिवर्तन का मुद्रण वर्णानुक्रम में किया जाना चाहिए (शब्दकोशीय रूप से क्रमबद्ध क्रम)। आइए विषय को बेहतर ढंग से समझने के लिए एक

  1. C++ में एक स्ट्रिंग को ब्रैकेट रूप में तोड़ने के सभी तरीकों को प्रिंट करें

    इस समस्या में, हमें एक स्ट्रिंग दी जाती है और हमें इसे सबस्ट्रिंग में तोड़ना होता है और उन्हें संलग्न कोष्ठक में प्रिंट करना होता है। आइए समस्या को बेहतर ढंग से समझने के लिए कुछ उदाहरण लें, Input : wxyz Output :    (w) (x) (y) (z)    (w) (x) (yz)    (w) (xy) (z)  

  1. सी ++ में एक स्ट्रिंग को दूसरे में कॉपी किए बिना क्रमबद्ध क्रम में स्ट्रिंग्स की सरणी प्रिंट करें

    एक स्ट्रिंग को दूसरे में कॉपी किए बिना क्रमबद्ध क्रम में स्ट्रिंग्स की एक सरणी मुद्रित करने की समस्या में, हमें स्ट्रिंग की सरणी को सॉर्ट करने की आवश्यकता होती है। यहां प्रोग्रामर सॉर्ट करते समय एक स्ट्रिंग को दूसरी स्ट्रिंग में कॉपी नहीं कर सकता। आइए अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण