इस समस्या में, हमें एक स्ट्रिंग दी जाती है और हमें दिए गए स्ट्रिंग से सबस्ट्रिंग को ढूंढना होता है। पाया जाने वाला विकल्प स्वर से शुरू होना चाहिए और निरंतर वर्ण के साथ समाप्त होना चाहिए।
एक स्ट्रिंग वर्णों की एक सरणी है।
इस समस्या में उत्पन्न होने वाला सबस्ट्रिंग स्ट्रिंग के कुछ वर्णों को हटाकर उत्पन्न किया जा सकता है। और स्ट्रिंग के क्रम को बदले बिना।
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