इस समस्या में, हमें एक स्ट्रिंग दी जाती है और हमें दिए गए स्ट्रिंग से सबस्ट्रिंग को ढूंढना होता है। पाया जाने वाला विकल्प स्वर से शुरू होना चाहिए और निरंतर वर्ण के साथ समाप्त होना चाहिए।
एक स्ट्रिंग वर्णों की एक सरणी है।
इस समस्या में उत्पन्न होने वाली सबस्ट्रिंग स्ट्रिंग के कुछ वर्णों को हटाकर उत्पन्न की जा सकती है। और स्ट्रिंग के क्रम को बदले बिना।
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.
पुनरावृत्त दृष्टिकोण में, हम सभी स्ट्रिंग पर पुनरावृति करेंगे। 1 से 2 तक legth(string) -1.
उदाहरण
#include <bits/stdc++.h> using namespace std; string subString(string s, int binary){ string sub = ""; int pos; while(binary>0){ pos=log2(binary&-binary)+1; sub=s[pos-1]+sub; binary= (binary & ~(1 << (pos-1))); } reverse(sub.begin(),sub.end()); return sub; } void findAllSubStrings(string s){ map<int, set<string> > sorted_subsequence; int len = s.size(); int limit = pow(2, len); for (int i = 1; i <= limit - 1; i++) { string sub = subString(s, i); sorted_subsequence[sub.length()].insert(sub); } for (auto it : sorted_subsequence) { for (auto ii : it.second) cout<<ii<<" "; cout<<"\t"; } } int main() { string s = "wxyz"; cout<<"The substring are :\n"; findAllSubStrings(s); return 0; }
आउटपुट
सबस्ट्रिंग है -
w x y z wx wy wz xy xz yz wxy wxz wyz xyz wxyz