Modify string by removing vowels in between two consonants

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: zambiatek
Output: zambiatekfrzambiatek
In the substring ‘for’ the alphabet ‘o’ is between two consonants ‘f’ and ‘r’.
Thus, it is removed from there and the string becomes-‘zambiatekfrzambiatek‘
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 notbool 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 stringstring 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 Codeint main(){ string str = "zambiatek"; // 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 stringimport java.io.*;import java.util.*;import java.lang.*;class GFG{ // Function to check if the // character x is a vowel or notstatic 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 stringstatic 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 Codepublic static void main(String[] args){ String str = "zambiatek"; // 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 notdef 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 stringdef 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 Codeif __name__ == '__main__': str = "zambiatek" # 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 stringusing System;class GFG{ // Function to check if the // character x is a vowel or notstatic 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 stringstatic 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 Codepublic static void Main(){ String str = "zambiatek"; // 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 notfunction 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 stringfunction 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 = "zambiatek";// 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 = "zambiatek"; // Remove all the Sandwitched Vowels var updatedString = updateSandwichedVowels(str); document.write(updatedString); </script> |
zambiatekfrzambiatek
Complexity Analysis:
- Time Complexity: O(N) where N is the length of the input string.
- Auxiliary Space: O(N)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



