Replace every vowels with lexicographically next vowel in a String - GeeksforGeeks

06 May, 2022
Given string str of size N, which contains lowercase English alphabets. The task is to replace each vowel with the next immediate vowel lexicographically, i.e., 
‘a’ will be replaced by ‘e’, ‘e’ will be replaced by ‘i’, ‘i’ will be replaced by ‘o’, ‘o’ will be replaced by ‘u’, ‘u’ will be replaced by ‘a’.
Examples:  
Input: str = “geeksforgeeks” Output: giiksfurgiiks Explanation: e is replace by i o is replace by u So final string will be “giiksfurgiiks”.
Input: str = “gfg” Output: gfg 
Approach: We will create a Hashing of size 5 to store all vowels so that the replacement can be done easily for each vowel. 
Create a map and store all vowels.
Iterate the string elements from left to right.
It the string element is a vowel, then change it to the next vowels.
Finally, print the final string.
Here is the implementation of the above approach:
C++14
Java
Python3
C#
Javascript
// C++ program to convert all the vowels in// in the string to the next vowel #include <bits/stdc++.h>using namespace std; // Function to replace every vowel// with next vowel lexicographicallystring print_next_vovel_string(string str){     // Storing the vowels in the map with    // custom numbers showing  their index    map<char, int> m;    m['a'] = 0;    m['e'] = 1;    m['i'] = 2;    m['o'] = 3;    m['u'] = 4;    char arr[5] = { 'a', 'e', 'i', 'o', 'u' };     int N = str.length();     // Iterate over the string    for (int i = 0; i < N; i++) {         char c = str[i];         // If the current character is a vowel        // Find the index in Hash and        // Replace it with next vowel from Hash        if (c == 'a' || c == 'e' || c == 'i'            || c == 'o' || c == 'u') {             int index = m + 1;            int newindex = index % 5;            str[i] = arr[newindex];        }    }     return str;} // Driver functionint main(){    string str = "geeksforgeeks";     cout << print_next_vovel_string(str);    return 0;}
// Java program to convert all the vowels in// in the String to the next vowelimport java.util.*; class GFG{ // Function to replace every vowel// with next vowel lexicographicallystatic String print_next_vovel_String(char []str){     // storing the vowels in the map with    // custom numbers showing their index    HashMap<Character,            Integer> m = new HashMap<Character,                                     Integer>();    m.put('a', 0);    m.put('e', 1);    m.put('i', 2);    m.put('o', 3);    m.put('u', 4);     char arr[] = { 'a', 'e', 'i', 'o', 'u' };     int N = str.length;     // Iterate over the String    for(int i = 0; i < N; i++)    {        char c = str[i];         // If the current character is a vowel        // Find the index in Hash and        // Replace it with next vowel from Hash        if (c == 'a' || c == 'e' ||            c == 'i' || c == 'o' ||            c == 'u')        {            int index = m.get(c) + 1;            int newindex = index % 5;                         str[i] = arr[newindex];        }    }    return String.valueOf(str);} // Driver codepublic static void main(String[] args){    String str = "geeksforgeeks";     System.out.print(print_next_vovel_String(        str.toCharArray()));}} // This code is contributed by Amit Katiyar
# Python3 program to convert# all the vowels in the string# to the next vowel # Function to replace every vowel# with next vowel lexicographicallydef print_next_vovel_string(st):     # Storing the vowels in    # the map with custom    # numbers showing  their index    m = {}    m['a'] = 0    m['e'] = 1    m['i'] = 2    m['o'] = 3    m['u'] = 4    arr = ['a', 'e', 'i', 'o', 'u']     N = len(st)     # Iterate over the string    for i in range (N):         c = st[i]         # If the current character        # is a vowel        # Find the index in Hash        # and Replace it with next        # vowel from Hash        if (c == 'a' or c == 'e' or            c == 'i'or c == 'o' or            c == 'u'):                       index = m[st[i]] + 1            newindex = index % 5            st = st.replace(st[i], arr[newindex], 1)     return st # Driver functionif __name__ == "__main__":    st = "geeksforgeeks"    print (print_next_vovel_string(st))    # This code is contributed by Chitranayal
// C# program to convert all the vowels in// in the String to the next vowelusing System;using System.Collections.Generic; class GFG{ // Function to replace every vowel// with next vowel lexicographicallystatic String print_next_vovel_String(char []str){       // Storing the vowels in the map with    // custom numbers showing their index    Dictionary<char,               int> m = new Dictionary<char,                                       int>();    m.Add('a', 0);    m.Add('e', 1);    m.Add('i', 2);    m.Add('o', 3);    m.Add('u', 4);     char []arr = { 'a', 'e', 'i', 'o', 'u' };     int N = str.Length;     // Iterate over the String    for(int i = 0; i < N; i++)    {        char c = str[i];         // If the current character is a vowel        // Find the index in Hash and        // Replace it with next vowel from Hash        if (c == 'a' || c == 'e' ||            c == 'i' || c == 'o' ||            c == 'u')        {            int index = m + 1;            int newindex = index % 5;                         str[i] = arr[newindex];        }    }    return String.Join("", str);} // Driver codepublic static void Main(String[] args){    String str = "geeksforgeeks";     Console.Write(print_next_vovel_String(        str.ToCharArray()));}} // This code is contributed by Amit Katiyar
<script>      // JavaScript program to convert      // all the vowels in the string      // to the next vowel      // Function to replace every vowel      // with next vowel lexicographically      function print_next_vovel_string(st) {        // Storing the vowels in        // the map with custom        // numbers showing their index        var m = {};        m["a"] = 0;        m["e"] = 1;        m["i"] = 2;        m["o"] = 3;        m["u"] = 4;        var arr = ["a", "e", "i", "o", "u"];         var N = st.length;         // Iterate over the string        for (let i = 0; i < N; i++) {          var c = st[i];           // If the current character          // is a vowel          // Find the index in Hash          // and Replace it with next          // vowel from Hash          if (c === "a" || c === "e" || c === "i" || c === "o" || c === "u") {            index = m[st[i]] + 1;            newindex = index % 5;            st = st.replace(st[i], arr[newindex]);          }        }        return st;      }       // Driver function      var st = "geeksforgeeks";      document.write(print_next_vovel_string(st));    </script>
giiksfurgiiks
 
Time Complexity: O (N) Auxiliary Space: O (1)
amit143katiyar
ukasp
rdtank
avtarkumar719
lexicographic-ordering
vowel-consonant
Arrays
Strings
Arrays
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Count pairs with given sum
Chocolate Distribution Problem
Window Sliding Technique
Reversal algorithm for array rotation
Next Greater Element
Reverse a string in Java
Write a program to print all permutations of a given string
C++ Data Types
Longest Common Subsequence | DP-4
Check for Balanced Brackets in an expression (well-formedness) using Stack