Skip to content
Related Articles

Related Articles

Improve Article

Modify string by removing vowels in between two consonants

  • Difficulty Level : Easy
  • Last Updated : 12 May, 2021
Geek Week

Given a string S, comprising of only lowercase English alphabets, the task is to update the string by eliminating such vowels from the string that occur between two consonants. 
Examples:

Input: bab 
Output: bb
Here the letter ‘a’ is a vowel and is between two immediate consonants. 
Thus, it is removed from the string, and the resultant string becomes ‘bb‘ 
Input: geeksforgeeks 
Output: geeksfrgeeks 
In the substring ‘for’ the alphabet ‘o’ is between two consonants ‘f’ and ‘r’. 
Thus, it is removed from there and the string becomes-‘geeksfrgeeks

Approach: Initialize an empty updatedString. Given below are the steps to solve the above problem.  

  • Traverse the string from left to right.
  • If the current character is a vowel, check the character before it and the character after it, if both of these are consonants, then the current vowel is a ‘Sandwiched Vowel’ and it needs to be removed from S, thus don’t append this character to A. 
    Else, append the current character to A.
  • Continue the process until all the vowels in between two consonants are removed from the string

Below is the implementation of the above approach:  

C++




// C++ program to remove all Vowels
// in between two consonants from the string
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if the character x is a vowel or not
bool isVowel(char x)
{
    if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u')
        return true;
    else
        return false;
}
 
// Returns the updated string formed after removing all
// the Sandwiched Vowels from the given string
string updateSandwichedVowels(string a)
{
    int n = a.length();
 
    // string to store the Updated String after
    // removing the Sandwiched Vowels
    string updatedString = "";
 
    // traverse the string from left to right
    for (int i = 0; i < n; i++) {
 
        // if the current character is the first or the
        // last character of the string then, this needs
        // to be appended to the updatedString, since the
        // corner alphabet irrespective of it being a vowel
        // or a consonant, is never 'Sandwiched'
        if (!i || i == n - 1) {
            updatedString += a[i];
            continue;
        }
        // Check if the current character of the string is
        // a vowel and both the previous and the next characters
        // are consonants, if so then this is a sandwiched
        // vowel, thus is ignored and not appended
        // to the updated string
        if (isVowel(a[i]) && !isVowel(a[i - 1])
            && !isVowel(a[i + 1])) {
            continue;
        }
 
        // if this character is not a sandwiched Vowel append
        // it to the updated String
        updatedString += a[i];
    }
 
    return updatedString;
}
 
// Driver Code
int main()
{
 
    string str = "geeksforgeeks";
 
    // Remove all the Sandwitched Vowels
    string updatedString = updateSandwichedVowels(str);
 
    cout << updatedString;
 
    return 0;
}

Java




// Java program to remove all
// Vowels in between two
// consonants from the string
import java.io.*;
import java.util.*;
import java.lang.*;
 
class GFG
{
     
// Function to check if the
// character x is a vowel or not
static boolean isVowel(char x)
{
    if (x == 'a' || x == 'e' ||
        x == 'i' || x == 'o' ||
        x == 'u')
        return true;
    else
        return false;
}
 
// Returns the updated string
// formed after removing all
// the Sandwiched Vowels from
// the given string
static String updateSandwichedVowels(String a)
{
    int n = a.length();
 
    // string to store the Updated
    // String after removing the
    // Sandwiched Vowels
    String updatedString = "";
 
    // traverse the string
    // from left to right
    for (int i = 0; i < n; i++)
    {
 
        // if the current character is
        // the first or the last character
        // of the string then, this needs
        // to be appended to the updatedString,
        // since the corner alphabet irrespective
        // of it being a vowel or a consonant,
        // is never 'Sandwiched'
        if (i == 0 || i == n - 1)
        {
            updatedString += a.charAt(i);
            continue;
        }
         
        // Check if the current character
        // of the string is a vowel and both
        // the previous and the next characters
        // are consonants, if so then this is
        // a sandwiched vowel, thus is ignored
        // and not appended to the updated string
        if (isVowel(a.charAt(i))== true &&
            isVowel(a.charAt(i - 1))== false &&
            isVowel(a.charAt(i + 1))== false)
        {
            continue;
        }
 
        // if this character is not
        // a sandwiched Vowel append
        // it to the updated String
        updatedString += a.charAt(i);
    }
 
    return updatedString;
}
 
// Driver Code
public static void main(String[] args)
{
 
    String str = "geeksforgeeks";
 
    // Remove all the Sandwitched Vowels
    String updatedString = updateSandwichedVowels(str);
 
    System.out.print(updatedString);
 
}
}

Python3




# Python 3 program to remove all Vowels
# in between two consonants from the string
 
# Function to check if the character
# x is a vowel or not
def isVowel(x):
    if (x == 'a' or x == 'e' or x == 'i' or
                    x == 'o' or x == 'u'):
        return True
    else:
        return False
 
# Returns the updated string formed after
# removing all the Sandwiched Vowels from
# the given string
def updateSandwichedVowels(a):
    n = len(a)
 
    # string to store the Updated String after
    # removing the Sandwiched Vowels
    updatedString = ""
 
    # traverse the string from left to right
    for i in range(0, n, 1):
         
        # if the current character is the first
        # or the last character of the string
        # then, this needs to be appended to
        # the updatedString, since the corner
        # alphabet irrespective of it being a vowel
        # or a consonant, is never 'Sandwiched'
        if (i == 0 or i == n - 1):
            updatedString += a[i]
            continue
         
        # Check if the current character of the
        # string is a vowel and both the previous
        # and the next characters are consonants,
        # if so then this is a sandwiched vowel,
        # thus is ignored and not appended to the
        # updated string
        if (isVowel(a[i]) == True and
            isVowel(a[i - 1]) == False and
            isVowel(a[i + 1]) == False):
            continue
 
        # if this character is not a sandwiched
        # Vowel append it to the updated String
        updatedString += a[i]
 
    return updatedString
 
# Driver Code
if __name__ == '__main__':
    str = "geeksforgeeks"
 
    # Remove all the Sandwitched Vowels
    updatedString = updateSandwichedVowels(str)
 
    print(updatedString)
     
# This code is contributed by
# Surendra_Gangwar   

C#




// C# program to remove all
// Vowels in between two
// consonants from the string
using System;
class GFG
{
     
// Function to check if the
// character x is a vowel or not
static bool isVowel(char x)
{
    if (x == 'a' || x == 'e' ||
        x == 'i' || x == 'o' ||
        x == 'u')
        return true;
    else
        return false;
}
 
// Returns the updated string
// formed after removing all
// the Sandwiched Vowels from
// the given string
static String updateSandwichedVowels(String a)
{
    int n = a.Length;
    // string to store the Updated
    // String after removing the
    // Sandwiched Vowels
    String updatedString = "";
 
    // traverse the string
    // from left to right
    for (int i = 0; i < n; i++)
    {
 
        // if the current character is
        // the first or the last character
        // of the string then, this needs
        // to be appended to the updatedString,
        // since the corner alphabet irrespective
        // of it being a vowel or a consonant,
        // is never 'Sandwiched'
        if (i == 0 || i == n - 1)
        {
            updatedString += a[i];
            continue;
        }
         
        // Check if the current character
        // of the string is a vowel and both
        // the previous and the next characters
        // are consonants, if so then this is
        // a sandwiched vowel, thus is ignored
        // and not appended to the updated string
        if ((isVowel(a[i])) == true &&
            isVowel(a[i - 1]) == false &&
            isVowel(a[i + 1]) == false)
        {
            continue;
        }
 
        // if this character is not
        // a sandwiched Vowel append
        // it to the updated String
        updatedString += a[i];
    }
 
    return updatedString;
}
 
// Driver Code
public static void Main()
{
 
    String str = "geeksforgeeks";
 
    // Remove all the Sandwitched Vowels
    String updatedString = updateSandwichedVowels(str);
 
    Console.WriteLine(updatedString);
 
}
}// This code is contributed by Mukul Singh.

PHP




<?php
// PHP program to remove all Vowels
// in between two consonants from the string
 
// Function to check if the character
// x is a vowel or not
function isVowel($x)
{
    if ($x == 'a' || $x == 'e' ||
        $x == 'i' || $x == 'o' || $x == 'u')
        return true;
    else
        return false;
}
 
// Returns the updated string formed
// after removing all the Sandwiched
// Vowels from the given string
function updateSandwichedVowels($a)
{
    $n = strlen($a);
 
    // string to store the Updated String
    // after removing the Sandwiched Vowels
    $updatedString = "";
 
    // traverse the string from left to right
    for ( $i = 0; $i < $n; $i++)
    {
 
        // if the current character is the first
        // or the last character of the string
        // then, this needs to be appended to the
        // updatedString, since the corner alphabet
        // irrespective of it being a vowel or a
        // consonant, is never 'Sandwiched'
        if (!$i || $i == $n - 1)
        {
            $updatedString .= $a[$i];
            continue;
        }
         
        // Check if the current character of the
        // string is a vowel and both the previous
        // and the next characters are consonants,
        // if so then this is a sandwiched vowel,
        // thus is ignored and not appended to the
        // updated string
        if (isVowel($a[$i]) && !isVowel($a[$i - 1]) &&
                               !isVowel($a[$i + 1]))
        {
            continue;
        }
 
        // if this character is not a sandwiched
        // Vowel append it to the updated String
        $updatedString .= $a[$i];
    }
 
    return $updatedString;
}
 
// Driver Code
$str = "geeksforgeeks";
 
// Remove all the Sandwitched Vowels
$updatedString = updateSandwichedVowels($str);
 
echo $updatedString;
 
// This code is contributed
// by princiraj1992
?>

Javascript




<script>
      // JavaScript program to remove all
      // Vowels in between two
      // consonants from the string
      // Function to check if the
      // character x is a vowel or not
      function isVowel(x) {
        if (x === "a" || x === "e" || x === "i" || x === "o" || x === "u")
          return true;
        else return false;
      }
 
      // Returns the updated string
      // formed after removing all
      // the Sandwiched Vowels from
      // the given string
      function updateSandwichedVowels(a) {
        var n = a.length;
        // string to store the Updated
        // String after removing the
        // Sandwiched Vowels
        var updatedString = "";
 
        // traverse the string
        // from left to right
        for (var i = 0; i < n; i++) {
          // if the current character is
          // the first or the last character
          // of the string then, this needs
          // to be appended to the updatedString,
          // since the corner alphabet irrespective
          // of it being a vowel or a consonant,
          // is never 'Sandwiched'
          if (i === 0 || i === n - 1) {
            updatedString += a[i];
            continue;
          }
 
          // Check if the current character
          // of the string is a vowel and both
          // the previous and the next characters
          // are consonants, if so then this is
          // a sandwiched vowel, thus is ignored
          // and not appended to the updated string
          if (
            isVowel(a[i]) === true &&
            isVowel(a[i - 1]) === false &&
            isVowel(a[i + 1]) === false
          ) {
            continue;
          }
 
          // if this character is not
          // a sandwiched Vowel append
          // it to the updated String
          updatedString += a[i];
        }
 
        return updatedString;
      }
 
      // Driver Code
      var str = "geeksforgeeks";
      // Remove all the Sandwitched Vowels
      var updatedString = updateSandwichedVowels(str);
      document.write(updatedString);
    </script>

Output: 



geeksfrgeeks

Time Complexity: O(N) where N is the length of the input string.
Auxiliary Space: O(N)

Attention reader! All those who say programming isn’t for kids, just haven’t met the right mentors yet. Join the  Demo Class for First Step to Coding Coursespecifically designed for students of class 8 to 12. 

The students will get to learn more about the world of programming in these free classes which will definitely help them in making a wise career choice in the future.




My Personal Notes arrow_drop_up
Recommended Articles
Page :