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

C++ में स्वर से शुरू और व्यंजन पर समाप्त होने वाले स्ट्रिंग के सभी उपअनुक्रम प्रिंट करें


इस समस्या में, हमें एक स्ट्रिंग दी गई है और हमें दी गई स्ट्रिंग से उपस्ट्रिंग ढूंढनी है। खोजी जाने वाली उपस्ट्रिंग को एक स्वर से शुरू और व्यंजन वर्ण पर समाप्त होना चाहिए।

एक स्ट्रिंग वर्णों की एक सरणी है।

इस समस्या में उत्पन्न की जाने वाली उपस्ट्रिंग को स्ट्रिंग के कुछ वर्णों को हटाकर उत्पन्न किया जा सकता है। और स्ट्रिंग के क्रम को बदले बिना।

इनपुट: 'abc' आउटपुट: ab, ac, abc

इस समस्या को हल करने के लिए, हम स्ट्रिंग पर पुनरावृति करेंगे और स्वरों को फिक्स करेंगे और अगले अनुक्रम की जांच करेंगे। आइए समाधान खोजने के लिए एक एल्गोरिदम देखें -

एल्गोरिदम

चरण 1: वेरिएबल i के साथ स्ट्रिंग के प्रत्येक वर्ण पर पुनरावृति करें। चरण 2: यदि iवां वर्ण एक स्वर है। चरण 3: यदि jवां वर्ण एक व्यंजन है। चरण 4: हैशसेट में जोड़ें, 1वें वर्ण से jवें वर्ण तक की उपस्ट्रिंग। चरण 5: स्ट्रिंग से उपस्ट्रिंग ढूंढने के लिए निम्नलिखित चरणों को दोहराएं।

उदाहरण

#include <bits/stdc++.h> using namespace std; set<string> st; bool isaVowel(char c); bool isaConsonant(char c); void findSubSequence(string str); int main(){    string s = "abekns";    findSubSequence(s);    cout<<"The substring generated are :\n";    for (auto i : st)       cout<<i<<" ";    cout << endl;    return 0; } bool isaVowel(char c) {    return (c=='a'||c=='e'||c=='i'||c=='o'||c=='u'); } bool isaConsonant(char c) {    return !isaVowel(c); } void findSubSequence(string str) {    for (int i = 0; i < str.length(); i++) {       if (isaVowel(str[i])) {          for (int j = str.length() - 1; j >= i; j--) {             if (isaConsonant(str[j])) {                string str_sub = str.substr(i, j + 1);                st.insert(str_sub);                for (int k = 1; k < str_sub.length() - 1; k++){                   string sb = str_sub;                   sb.erase(sb.begin() + k);                   findSubSequence(sb);                }             }          }       }    } }

आउटपुट

उत्पन्न उपस्ट्रिंग हैं -

ab abek abekn abekns abeks aben abens abes abk abkn abkns abks abn abns abs aek aekn aekns aeks aen aens aes ak akn akns aks an ans as ek ekn ekns eks en ens es

  1. C++ में विषम और सम संख्या में नोड्स वाले सभी स्तर प्रिंट करें C++ में विषम और सम संख्या में नोड्स वाले सभी स्तर प्रिंट करें

    इस समस्या में, हमें एक ट्री दिया गया है। और हमें उन सभी स्तरों को प्रिंट करना है जिनमें सम संख्या में नोड्स और विषम संख्या में नोड्स हैं। अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं आउटपुट - विषम संख्या में नोड्स वाले स्तर: 1, 3, 4 सम संख्या में नोड्स वाले स्तर: 2 व्याख्या - पहले स्तर म

  1. - C++ में वर्णों की पुनरावृत्ति के साथ सभी क्रमपरिवर्तन प्रिंट करें

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

  1. - Java में वॉवेल से शुरू होने वाले और लंबाई n के बराबर सभी शब्दों को कैसे निकालें?

    वॉवेल लेटर से शुरू होने वाले शब्द को खोजने के लिए: String क्लास की split() विधि दिए गए स्ट्रिंग को String क्लास की split() विधि का उपयोग करके स्ट्रिंग्स के ऐरे में विभाजित करती है। फॉर लूप में प्राप्त ऐरे के प्रत्येक शब्द के माध्यम से ट्रैवर्स करें। प्राप्त ऐरे में प्रत्येक शब्द के पहले कैरेक्टर क