# Print all Subsequences of String which Start with Vowel and End with Consonant.

• Difficulty Level : Hard
• Last Updated : 25 May, 2022

Given a string return all possible subsequences which start with vowel and end with consonant. A String is a subsequence of a given String, that is generated by deleting some character of a given string without changing its order.
Examples:

```Input : 'abc'
Output : ab, ac, abc

Input : 'aab'
Output : ab, aab```

Question Source: Yatra.com Interview Experience | Set 7

Explanation of the Algorithm:

```Step 1: Iterate over the entire String
Step 2: check if the ith character for vowel
Step 3: If true iterate the string from the end,
if false move to next iteration
Step 4: check the jth character for consonant
if false move to next iteration
if true perform the following
Step 5: Add the substring starting at index i and
ending at index j to the hastset.
Step 6: Iterate over the substring drop each character
and recur to generate all its subString```

## C++

 `// C++ program to generate all the subse-quence``// starting with vowel and ending with consonant.``#include ``using` `namespace` `std;` `// Set to store all the subsequences``set st;` `// Utility method to check vowel``bool` `isVowel(``char` `c)``{``    ``return` `(c == ``'a'` `or c == ``'e'` `or``            ``c == ``'i'` `or c == ``'o'` `or``            ``c == ``'u'``);``}` `// Utility method to check consonant``bool` `isConsonant(``char` `c)``{``    ``return` `!isVowel(c);``}` `// It computes all the possible substring that``// starts with vowel and end with consonant``void` `subsequence(string str)``{``    ``// iterate over the entire string``    ``for` `(``int` `i = 0; i < str.length(); i++)``    ``{``        ``// test ith character for vowel``        ``if` `(isVowel(str[i]))``        ``{``            ``// if the ith character is vowel``            ``// iterate from end of the string``            ``// and check for consonant.``            ``for` `(``int` `j = str.length() - 1; j >= i; j--)``            ``{``                ``// test jth character for consonant.``                ``if` `(isConsonant(str[j]))``                ``{``                    ``// once we get a consonant add it to``                    ``// the hashset``                    ``string str_sub = str.substr(i, j + 1);``                    ``st.insert(str_sub);` `                    ``// drop each character of the substring``                    ``// and recur to generate all subsequence``                    ``// of the substring``                    ``for` `(``int` `k = 1; k < str_sub.length() - 1; k++)``                    ``{``                        ``string sb = str_sub;``                        ``sb.erase(sb.begin() + k);``                        ``subsequence(sb);``                    ``}``                ``}``            ``}``        ``}``    ``}``}` `// Driver Code``int` `main()``{``    ``string s = ``"xabcef"``;``    ``subsequence(s);` `    ``for` `(``auto` `i : st)``        ``cout << i << ``" "``;``    ``cout << endl;` `    ``return` `0;``}` `// This code is contributed by``// sanjeev2552`

## Java

 `// Java Program to generate all the subsequence``// starting with vowel and ending with consonant.``import` `java.util.HashSet;` `public` `class` `Subsequence {` `    ``// Set to store all the subsequences``    ``static` `HashSet st = ``new` `HashSet<>();` `    ``// It computes all the possible substring that``    ``// starts with vowel and end with consonent``    ``static` `void` `subsequence(String str)``    ``{``        ``// iterate over the entire string``        ``for` `(``int` `i = ``0``; i < str.length(); i++) {``        ` `            ``// test ith character for vowel``            ``if` `(isVowel(str.charAt(i))) {``        ` `                ``// if the ith character is vowel``                ``// iterate from end of the string``                ``// and check for consonant.``                ``for` `(``int` `j = (str.length() - ``1``); j >= i; j--) {``                    ` `                    ``// test jth character for consonant.``                    ``if` `(isConsonant(str.charAt((j)))) {``                    ` `                        ``// once we get a consonant add it to``                        ``// the hashset``                        ``String str_sub = str.substring(i, j + ``1``);``                        ``st.add(str_sub);` `                        ``// drop each character of the substring``                        ``// and recur to generate all subsequence``                        ``// of the substring``                        ``for` `(``int` `k = ``1``; k < str_sub.length() - ``1``; k++) {``                            ``StringBuffer sb = ``new` `StringBuffer(str_sub);``                            ``sb.deleteCharAt(k);``                            ``subsequence(sb.toString());``                        ``}``                    ``}``                ``}``            ``}``        ``}``    ``}` `    ``// Utility method to check vowel``    ``static` `boolean` `isVowel(``char` `c)``    ``{``        ``return` `(c == ``'a'` `|| c == ``'e'` `|| c == ``'i'` `|| c == ``'o'``                                              ``|| c == ``'u'``);``    ``}` `    ``// Utility method to check consonant``    ``static` `boolean` `isConsonant(``char` `c)``    ``{``        ``return` `!isVowel(c);``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``String s = ``"xabcef"``;``        ``subsequence(s);``        ``System.out.println(st);``    ``}``}`

## Python3

 `# Python program to generate all the subse-quence``# starting with vowel and ending with consonant.` `# Set to store all the subsequences``st ``=` `set``()` `# Utility method to check vowel``def` `isVowel(c):` `    ``return` `(c ``=``=` `'a'` `or` `c ``=``=` `'e'` `or``            ``c ``=``=` `'i'` `or` `c ``=``=` `'o'` `or``            ``c ``=``=` `'u'``)` `# Utility method to check consonant``def` `isConsonant(c):` `    ``return` `not` `isVowel(c)` `# It computes all the possible substring that``# starts with vowel and end with consonant``def` `subsequence(``Str``):` `    ``global` `st` `    ``# iterate over the entire string``    ``for` `i ``in` `range``(``len``(``Str``)):` `        ``# test ith character for vowel``        ``if` `(isVowel(``Str``[i])):``        ` `            ``# if the ith character is vowel``            ``# iterate from end of the string``            ``# and check for consonant.``            ``for` `j ``in` `range``(``len``(``Str``) ``-` `1``,i``-``1``,``-``1``):``            ` `                ``# test jth character for consonant.``                ``if` `(isConsonant(``Str``[j])):``                ` `                    ``# once we get a consonant add it to``                    ``# the hashset``                    ``str_sub ``=` `Str``[i : i ``+` `j ``+` `1``]``                    ``st.add(str_sub)` `                    ``# drop each character of the substring``                    ``# and recur to generate all subsequence``                    ``# of the substring``                    ``for` `k ``in` `range``(``1``,``len``(str_sub)):``                    ` `                        ``sb ``=` `str_sub``                        ``sb ``=` `sb.replace(sb[k],"")``                        ``subsequence(sb)` `# Driver Code``s ``=` `"xabcef"``subsequence(s)` `for` `i ``in` `st:``    ``print``(i,end ``=` `" "``)``print``()` `# This code is contributed by shinjanpatra`

## C#

 `// C# Program to generate all the subsequence``// starting with vowel and ending with consonant.``using` `System;``using` `System.Collections.Generic;``using` `System.Text;` `class` `Subsequence``{` `    ``// Set to store all the subsequences``    ``static` `HashSet st = ``new` `HashSet();` `    ``// It computes all the possible substring that``    ``// starts with vowel and end with consonent``    ``static` `void` `subsequence(String str)``    ``{``        ``// iterate over the entire string``        ``for` `(``int` `i = 0; i < str.Length; i++)``        ``{``        ` `            ``// test ith character for vowel``            ``if` `(isVowel(str[i]))``            ``{``        ` `                ``// if the ith character is vowel``                ``// iterate from end of the string``                ``// and check for consonant.``                ``for` `(``int` `j = (str.Length - 1); j >= i; j--)``                ``{``                    ` `                    ``// test jth character for consonant.``                    ``if` `(isConsonant(str[j]))``                    ``{``                    ` `                        ``// once we get a consonant add it to``                        ``// the hashset``                        ``String str_sub = str.Substring(i, j -i + 1);``                        ``st.Add(str_sub);` `                        ``// drop each character of the substring``                        ``// and recur to generate all subsequence``                        ``// of the substring``                        ``for` `(``int` `k = 1; k < str_sub.Length - 1; k++)``                        ``{``                            ``StringBuilder sb = ``new` `StringBuilder(str_sub);``                            ``sb.Remove(k, 1);``                            ``subsequence(sb.ToString());``                        ``}``                    ``}``                ``}``            ``}``        ``}``    ``}` `    ``// Utility method to check vowel``    ``static` `bool` `isVowel(``char` `c)``    ``{``        ``return` `(c == ``'a'` `|| c == ``'e'` `|| c == ``'i'` `|| c == ``'o'``                                            ``|| c == ``'u'``);``    ``}` `    ``// Utility method to check consonant``    ``static` `bool` `isConsonant(``char` `c)``    ``{``        ``return` `!isVowel(c);``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main(String[] args)``    ``{``        ``String s = ``"xabcef"``;``        ``subsequence(s);``        ``foreach``(String str ``in` `st)``            ``Console.Write(str + ``", "``);``    ``}``}` `// This code is contributed by Rajput-Ji`

## Javascript

 ``

Output:

`[ef, ab, ac, aef, abc, abf, af, acf, abcef, abcf, acef, abef]`

This article is contributed by Sumit Ghosh. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.