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

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

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

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

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

Input: ‘abc’
Output: ab, ac, abc

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

एल्गोरिदम

Step 1: Iterate of each character of the string, with variable i.
Step 2: If the ith character is a vowel.
Step 3: If the jth character is a consonant.
Step 4: Add to the HashSet, substring from 1st character to jth character.
Step 5: Repeat the following steps and find substrings from the string.

उदाहरण

#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++ में विषम और सम संख्या वाले सभी स्तरों को प्रिंट करें

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

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

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

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

    किसी शब्द को खोजने के लिए एक स्वर अक्षर से शुरू होता है - स्ट्रिंग क्लास की स्प्लिट () विधि स्ट्रिंग क्लास की स्प्लिट () विधि का उपयोग करके दिए गए स्ट्रिंग को स्ट्रिंग्स की एक सरणी में विभाजित करें। लूप के लिए प्राप्त सरणी के प्रत्येक शब्द के माध्यम से पार करें। charAt() विधि का उपयोग करके