Replace consonants with next immediate consonants alphabetically in a String

• Difficulty Level : Medium
• Last Updated : 18 Nov, 2021

Given a string which contains lowercase English alphabets. The task is to replace each consonant with the next immediate consonant that comes in English alphabets.
Let’s say we have to replace character , it will be replaced by . Another example, let’s say we have to replace character , the next immediate consonant is , hence will be replaced by .
Note: If the character is ‘z’, then look circularly in English alphabets for the next consonant, i.e. replace it with ‘b’.
Examples

Input : str = "geeksforgeeks"
Output : heeltgosheelt

Input : str = "gfg"
Output : hgh

Approach:

• Iterate the string elements from left to right.
• It the string element is consonant, then check the next immediate alphabet of this element.
• If the next immediate alphabet is a consonant, then replace it with the this alphabet. If it is a vowel, then replace the string element with 2nd immediate alphabet as there are no consecutive vowels in English alphabets.

Below is the implementation of the above program:

C++

 // C++ program of above approach#include using namespace std; // Function to check if a character is// vowel or notbool isVowel(char ch){    if (ch != 'a' && ch != 'e' && ch != 'i'                     && ch != 'o' && ch != 'u')        return false;     return true;} // Function that replaces consonant with// next immediate consonant alphabeticallystring replaceConsonants(string s){    // Start traversing the string    for (int i = 0; i < s.length(); i++) {         if (!isVowel(s[i])) {             // if character is z,            // than replace it with character b            if (s[i] == 'z')                s[i] = 'b';             // if the alphabet is not z            else {                 // replace the element with                // next immediate alphabet                s[i] = (char)(s[i] + 1);                 // if next immediate alphabet is vowel,                // than take next 2nd immediate alphabet                // (since no two vowels occurs consecutively                // in alphabets) hence no further                // checking is required                if (isVowel(s[i]))                    s[i] = (char)(s[i] + 1);            }        }    }     return s;} // Driver codeint main(){    string s = "geeksforgeeks";     cout << replaceConsonants(s);     return 0;}

Java

 // Java program of above approachclass GFG{     // Function to check if a character is    // vowel or not    static boolean isVowel(char ch)    {        if (ch != 'a' && ch != 'e' && ch != 'i'                && ch != 'o' && ch != 'u')        {            return false;        }        return true;    }     // Function that replaces consonant with    // next immediate consonant alphabetically    static String replaceConsonants(char[] s)    {        // Start traversing the string        for (int i = 0; i < s.length; i++)        {            if (!isVowel(s[i]))            {                 // if character is z,                // than replace it with character b                if (s[i] == 'z')                {                    s[i] = 'b';                }                                 // if the alphabet is not z                else                {                     // replace the element with                    // next immediate alphabet                    s[i] = (char) (s[i] + 1);                     // if next immediate alphabet is vowel,                    // than take next 2nd immediate alphabet                    // (since no two vowels occurs consecutively                    // in alphabets) hence no further                    // checking is required                    if (isVowel(s[i]))                    {                        s[i] = (char) (s[i] + 1);                    }                }            }        }        return String.valueOf(s);    }     // Driver code    public static void main(String[] args)    {        String s = "geeksforgeeks";        System.out.println(replaceConsonants(s.toCharArray()));    }} // This code is contributed by Rajput-Ji

Python3

 # Python3 program of above approach # Function to check if a character is# vowel or notdef isVowel(ch):     if (ch != 'a' and ch != 'e' and        ch != 'i' and ch != 'o' and        ch != 'u'):        return False;     return True; # Function that replaces consonant with# next immediate consonant alphabeticallydef replaceConsonants(s):         # Start traversing the string    for i in range(len(s)):        if (isVowel(s[i])==False):             # if character is z,            # than replace it with character b            if (s[i] == 'z'):                s[i] = 'b';             # if the alphabet is not z            else:                 # replace the element with                # next immediate alphabet                s[i] = chr(ord(s[i]) + 1);                 # if next immediate alphabet is vowel,                # than take next 2nd immediate alphabet                # (since no two vowels occurs consecutively                # in alphabets) hence no further                # checking is required                if (isVowel(s[i])==True):                    s[i] = chr(ord(s[i]) + 1);     return ''.join(s); # Driver codes = "geeksforgeeks"; print(replaceConsonants(list(s))); # This code is contributed by mits

C#

 // C# program of above approachusing System; class GFG{     // Function to check if a character is    // vowel or not    static bool isVowel(char ch)    {        if (ch != 'a' && ch != 'e' && ch != 'i'                && ch != 'o' && ch != 'u')        {            return false;        }        return true;    }     // Function that replaces consonant with    // next immediate consonant alphabetically    static String replaceConsonants(char[] s)    {                 // Start traversing the string        for (int i = 0; i < s.Length; i++)        {            if (!isVowel(s[i]))            {                 // if character is z,                // than replace it with character b                if (s[i] == 'z')                {                    s[i] = 'b';                }                                 // if the alphabet is not z                else                {                     // replace the element with                    // next immediate alphabet                    s[i] = (char) (s[i] + 1);                     // if next immediate alphabet is vowel,                    // than take next 2nd immediate alphabet                    // (since no two vowels occurs consecutively                    // in alphabets) hence no further                    // checking is required                    if (isVowel(s[i]))                    {                        s[i] = (char) (s[i] + 1);                    }                }            }        }        return String.Join("",s);    }     // Driver code    public static void Main(String[] args)    {        String s = "geeksforgeeks";        Console.WriteLine(replaceConsonants                            (s.ToCharArray()));    }} // This code is contributed by// 29AjayKumar



Javascript


Output:
heeltgosheelt

My Personal Notes arrow_drop_up