Modifique la string eliminando las vocales entre dos consonantes

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)

Publicación traducida automáticamente

Artículo escrito por sirjan13 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *