反转给定字符串中的元音

给定一个字符串,您的任务是只反转字符串的元音。 例如:

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
喜欢就支持一下吧
点赞15 分享