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