HackerRank Coding Question for Placements 4
Write a program to print all Subsequences of String which Start with Vowel and End with Consonant
Given a string return all possible subsequences which start with vowel and end with a 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
xplanation 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 consonent 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
// 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<String> 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 subsquence // 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 !(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ); } // Driver code public static void main(String[] args) { String s = "xabcef" ; subsequence(s); System.out.println(st); } } |
Output:
[ef, ab, ac, aef, abc, abf, af, acf, abcef, abcf, acef, abef]
Login/Signup to comment
Add comemnts here