在这个问题中,我们给了一个字符串,我们必须从给定的字符串中找到子字符串。要找到的子字符串应以元音开头,并以恒定字符结尾。
甲串是字符数组。
可以通过删除字符串中的某些字符来生成此问题中要生成的子字符串。并且无需更改字符串的顺序。
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长(字符串) -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