Open In App

Modify string by removing vowels in between two consonants

Improve
Improve
Like Article
Like
Save
Share
Report

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

Complexity Analysis:

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


Last Updated : 26 Aug, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads