Dada una string S, que consta solo de alfabetos ingleses en minúsculas, la tarea es actualizar la string eliminando las vocales de la string que se encuentran entre dos consonantes.
Ejemplos :
Entrada: bab
Salida: bb
Aquí la letra ‘a’ es una vocal y está entre dos consonantes inmediatas.
Por lo tanto, se elimina de la string y la string resultante se convierte en ‘ bb ‘
Entrada: geeksforgeeks
Salida: geeksfrgeeks
En la substring ‘for’, el alfabeto ‘o’ está entre dos consonantes ‘f’ y ‘r’.
Por lo tanto, se elimina de allí y la string se convierte en- ‘geeksfrgeeks ‘
Enfoque: inicialice una string actualizada vacía . A continuación se detallan los pasos para resolver el problema anterior.
- Atraviesa la cuerda de izquierda a derecha.
- Si el carácter actual es una vocal, marque el carácter anterior y el carácter posterior, si ambos son consonantes, entonces la vocal actual es una ‘vocal intercalada’ y debe eliminarse de S, por lo tanto, no agregue este carácter a A.
De lo contrario, agregue el carácter actual a A. - Continúe el proceso hasta que todas las vocales entre dos consonantes se eliminen de la string.
A continuación se muestra la implementación del enfoque anterior:
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>
Producción:
geeksfrgeeks
Complejidad de tiempo: O(N) donde N es la longitud de la string de entrada.
Espacio Auxiliar: O(N)