给定一个字符串,您的任务是只反转字符串的元音。 例如:
null
Input : helloOutput : holleInput : hello worldOutput : hollo werld
一个简单的解决方案是存储所有元音,同时扫描字符串,并在字符串的另一次迭代中按相反顺序放置元音。
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]!= ' ' ; 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]!= ' ' ; 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
时间复杂性: O(n),其中n=字符串的长度 辅助空间: O(v)其中v=字符串中元音的数量 更好的解决方案 就是使用两个指针分别从数组的开头和结尾扫描,并处理这些指针指向的元音。
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
时间复杂性: O(n),其中n=字符串的长度 辅助空间: O(1) 本文由 高拉夫·阿希瓦 和 高拉夫·米格拉尼 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END