Skip to content
Related Articles

Related Articles

Modify string by removing vowels in between two consonants
  • Difficulty Level : Easy
  • Last Updated : 10 Jan, 2019

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
?>


Output:

geeksfrgeeks

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :