Revertir Vocales de una Cadena - LeetCode 345


Descripción

Dada una cadena s, completa la función para que revierta todas las vocales de la cadena y luego devuelve esa cadena.

Las vocales son ‘a’, ‘e’, ‘i’, ‘o’, y ‘u’, y pueden aparecer tanto en mayúsculas como en minúsculas, y más de una vez.

Ejemplo 1

Entrada: s = "hello"
Salida: "holle"

Ejemplo 2:

Entrada: s = "leetcode"
Salida: "leotcede"

Restricciones:

  • 1 <= s.length <= 3 * 105
  • s compuesta de caracteres ASCII imprimibles.

Solución

Mostrar solución
class Solution:
    def reverseVowels(self, s: str) -> str:
        # 1. construir lista de vocales de forma inversa
        # Recorrer en orden inverso la palabra para encontrar
            # las vocales
        vocales_invertidas = []
        vocales = ['a', 'e', 'i', 'o', 'u']

        for i in range(len(s)-1, -1, -1):
            letra = s[i]
            if letra.lower() in vocales:
                vocales_invertidas.append(letra)

        # 2. recorrer palabra buscando vocales para reemplazar
        nueva_palabra = ''
        indice_vocal_invertida = 0
        for letra in s:
        # 3. si encontramos una vocal la reemplazamos, con
            # el el elemento correspondiente de la lista
            if letra.lower() in vocales:
                # TO DO: verificar que el indice sea válido
                siguiente_vocal = vocales_invertidas[indice_vocal_invertida]
                nueva_palabra += siguiente_vocal
                indice_vocal_invertida += 1
            else:
                nueva_palabra += letra
        # 4. devolver el valor
        return nueva_palabra

Solución en Google Colab Probar Solución

-

Live Resolviendo el Ejercicio

Fuente del ejercicio: https://leetcode.com/problems/reverse-vowels-of-a-string/?envType=study-plan-v2&envId=leetcode-75