Dada una string, su tarea es invertir solo las vocales de la string.
Ejemplos:
Input : hello Output : holle Input : hello world Output : hollo werld
Una solución simple es almacenar todas las vocales mientras se escanea la string y se colocan las vocales en orden inverso en otra iteración de la string.
Implementación:
C++
// C++ program to reverse order of vowels #include<bits/stdc++.h> using namespace std; // utility function to check for vowel bool isVowel(char c) { return (c=='a' || c=='A' || c=='e' || c=='E' || c=='i' || c=='I' || c=='o' || c=='O' || c=='u' || c=='U'); } // Function to reverse order of vowels string reverseVowel(string str) { int j=0; // Storing the vowels separately string vowel; for (int i=0; str[i]!='\0'; i++) if (isVowel(str[i])) vowel[j++] = str[i]; // Placing the vowels in the reverse // order in the string for (int i=0; str[i]!='\0'; i++) if (isVowel(str[i])) str[i] = vowel[--j] ; return str; } // Driver function int main() { string str = "hello world"; cout << reverseVowel(str); return 0; }
Java
// Java program to reverse order of vowels class GFG { // utility function to check for vowel static boolean isVowel(char c) { return (c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O' || c == 'u' || c == 'U'); } // Function to reverse order of vowels static String reverseVowel(String str1) { int j = 0; // Storing the vowels separately char[] str = str1.toCharArray(); String vowel = ""; for (int i = 0; i < str.length; i++) { if (isVowel(str[i])) { j++; vowel += str[i]; } } // Placing the vowels in the reverse // order in the string for (int i = 0; i < str.length; i++) { if (isVowel(str[i])) { str[i] = vowel.charAt(--j); } } return String.valueOf(str); } // Driver function public static void main(String[] args) { String str = "hello world"; System.out.println(reverseVowel(str)); } } // This code is contributed by princiRaj1992
Python3
# Python3 program to reverse order of vowels # utility function to check for vowel def isVowel(c): if (c == 'a' or c == 'A' or c == 'e' or c == 'E' or c == 'i' or c == 'I' or c == 'o' or c == 'O' or c == 'u' or c == 'U'): return True return False # Function to reverse order of vowels def reverserVowel(string): j = 0 vowel = [0] * len(string) string = list(string) # Storing the vowels separately for i in range(len(string)): if isVowel(string[i]): vowel[j] = string[i] j += 1 # Placing the vowels in the reverse # order in the string for i in range(len(string)): if isVowel(string[i]): j -= 1 string[i] = vowel[j] return ''.join(string) # Driver Code if __name__ == "__main__": string = "hello world" print(reverserVowel(string)) # This code is contributed by # sanjeev2552
C#
// C# program to reverse order of vowels using System; class GFG { // utility function to check for vowel static bool isVowel(char c) { return (c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O' || c == 'u' || c == 'U'); } // Function to reverse order of vowels static String reverseVowel(String str1) { int j = 0; // Storing the vowels separately char[] str = str1.ToCharArray(); String vowel = ""; for (int i = 0; i < str.Length; i++) { if (isVowel(str[i])) { j++; vowel += str[i]; } } // Placing the vowels in the reverse // order in the string for (int i = 0; i < str.Length; i++) { if (isVowel(str[i])) { str[i] = vowel[--j]; } } return String.Join("",str); } // Driver code public static void Main(String[] args) { String str = "hello world"; Console.WriteLine(reverseVowel(str)); } } // This code has been contributed by 29AjayKumar
Javascript
<script> // JavaScript program to reverse order of vowels // utility function to check for vowel function isVowel(c) { return (c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O' || c == 'u' || c == 'U'); } // Function to reverse order of vowels function reverseVowel(str1) { let j = 0; // Storing the vowels separately let str = str1.split(''); let vowel = ""; for (let i = 0; i < str.length; i++) { if (isVowel(str[i])) { j++; vowel += str[i]; } } // Placing the vowels in the reverse // order in the string for (let i = 0; i < str.length; i++) { if (isVowel(str[i])) { str[i] = vowel[--j]; } } return str.join(""); } let str = "hello world"; document.write(reverseVowel(str)); </script>
hollo werld
Complejidad temporal: O(n) donde n = longitud de la string
Espacio auxiliar: O(v) donde v = número de vocales en la string
Una mejor solución es usar dos punteros escaneando desde el principio y el final de la array respectivamente y manipular las vocales señaladas por estos punteros.
Implementación:
C++
// C++ program to reverse order of vowels #include<bits/stdc++.h> using namespace std; // utility function to check for vowel bool isVowel(char c) { return (c=='a' || c=='A' || c=='e' || c=='E' || c=='i' || c=='I' || c=='o' || c=='O' || c=='u' || c=='U'); } // Function to reverse order of vowels string reverseVowel(string str) { // Start two indexes from two corners // and move toward each other int i = 0; int j = str.length()-1; while (i < j) { if (!isVowel(str[i])) { i++; continue; } if (!isVowel(str[j])) { j--; continue; } // swapping swap(str[i], str[j]); i++; j--; } return str; } // Driver function int main() { string str = "hello world"; cout << reverseVowel(str); return 0; }
Java
// Java program to reverse order of vowels class GFG { // utility function to check for vowel static boolean isVowel(char c) { return (c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O' || c == 'u' || c == 'U'); } // Function to reverse order of vowels static String reverseVowel(String str) { // Start two indexes from two corners // and move toward each other int i = 0; int j = str.length()-1; char[] str1 = str.toCharArray(); while (i < j) { if (!isVowel(str1[i])) { i++; continue; } if (!isVowel(str1[j])) { j--; continue; } // swapping char t = str1[i]; str1[i]= str1[j]; str1[j]= t; i++; j--; } String str2 = String.copyValueOf(str1); return str2; } // Driver function public static void main(String[] args) { String str = "hello world"; System.out.println(reverseVowel(str)); } }
Python3
# Python3 program to reverse order of vowels # utility function to check for vowel def isVowel(c): return (c=='a' or c=='A' or c=='e' or c=='E' or c=='i' or c=='I' or c=='o' or c=='O' or c=='u' or c=='U') # Function to reverse order of vowels def reverseVowel(str): # Start two indexes from two corners # and move toward each other i = 0 j = len(str) - 1 while (i < j): if not isVowel(str[i]): i += 1 continue if (not isVowel(str[j])): j -= 1 continue # swapping str[i], str[j] = str[j], str[i] i += 1 j -= 1 return str # Driver function if __name__ == "__main__": str = "hello world" print(*reverseVowel(list(str)), sep = "") # This code is contributed by SHUBHAMSINGH10
C#
// C# program to reverse order of vowels using System; class GFG { // utility function to check for vowel static Boolean isVowel(char c) { return (c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O' || c == 'u' || c == 'U'); } // Function to reverse order of vowels static String reverseVowel(String str) { // Start two indexes from two corners // and move toward each other int i = 0; int j = str.Length-1; char[] str1 = str.ToCharArray(); while (i < j) { if (!isVowel(str1[i])) { i++; continue; } if (!isVowel(str1[j])) { j--; continue; } // swapping char t = str1[i]; str1[i]= str1[j]; str1[j]= t; i++; j--; } String str2 = String.Join("",str1); return str2; } // Driver code public static void Main(String[] args) { String str = "hello world"; Console.WriteLine(reverseVowel(str)); } } // This code is contributed by Rajput-Ji
Javascript
<script> // JavaScript program to reverse order of vowels // utility function to check for vowel function isVowel(c) { return (c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O' || c == 'u' || c == 'U'); } // Function to reverse order of vowels function reverseVowel(str) { // Start two indexes from two corners // and move toward each other let i = 0; let j = str.length-1; let str1 = str.split(""); while (i < j) { if (!isVowel(str1[i])) { i++; continue; } if (!isVowel(str1[j])) { j--; continue; } // swapping let t = str1[i]; str1[i]= str1[j]; str1[j]= t; i++; j--; } let str2 = (str1).join(""); return str2; } // Driver function let str = "hello world"; document.write(reverseVowel(str)); // This code is contributed by rag2127 </script>
hollo werld
Complejidad de tiempo: O(n) donde n = longitud de la string
Espacio auxiliar: O(1)
Este artículo es una contribución de Gaurav Ahirwar y Gaurav Miglani . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA