通过交换连续元音或辅音来修改字符串
给定一个字符串str 。任务是通过交换两个相邻字符来修改字符串,如果它们都是元音或它们都是辅音。
例子:
Input: str = “geeksforgeeks”
Output: geesfkogreesk
The alphabets ‘e’ and ‘e’ in geeksforgeeks are vowels so they are swapped so the string becomes geeksforgeeks.
The alphabets ‘k’ and ‘s’ in geeksforgeeks are consonants so they are swapped so the string becomes geeskforgeeks.
The alphabets ‘k’ and ‘f’ in geeskforgeeks are consonants so they are swapped so the string becomes geesfkorgeeks.
The alphabets ‘r’ and ‘g’ in geesfkorgeeks are consonants so they are swapped so the string becomes geeskfogreeks.
The alphabets ‘e’ and ‘e’ in geeskfogreeks are vowels so they are swapped so the string becomes geeskfogreeks.
The alphabets ‘k’ and ‘s’ in geeskfogreeks are vowels so they are swapped so the string becomes geeskfogreesk.
Input:str = “gefeg”
Output: gefeg
No continuous vowels or consonants.
方法:
- 遍历字符中的字符串。
- 考虑当前字符和下一个字符。
- 如果两个字符都是辅音或两个字符都是元音。
- 然后交换字符。
- 否则继续该过程直到字符串结束。
下面是上述方法的实现:
C++
// C++ implementation of the above approach
#include
using namespace std;
// Function to check if a character is a vowel
bool isVowel(char c)
{
c = tolower(c);
if (c == 'a' || c == 'e' || c == 'i'
|| c == 'o' || c == 'u')
return true;
return false;
}
// Function to swap two consecutively
// repeated vowels or consonants
string swapRepeated(string str)
{
// Traverse through the length of the string
for (int i = 0; i < str.length() - 1; i++) {
// Check if the two consecutive characters
// are vowels or consonants
if ((isVowel(str[i]) && isVowel(str[i + 1]))
|| (!isVowel(str[i]) && !isVowel(str[i + 1])))
// swap the two characters
swap(str[i], str[i + 1]);
}
return str;
}
// Driver code
int main()
{
string str = "geeksforgeeks";
cout << swapRepeated(str);
return 0;
}
Java
// Java implementation of the above approach
class GFG
{
// Function to check if a
// character is a vowel
static boolean isVowel(char c)
{
c = Character.toLowerCase(c);
if (c == 'a' || c == 'e' || c == 'i'
|| c == 'o' || c == 'u')
{
return true;
}
return false;
}
// Function to swap two consecutively
// repeated vowels or consonants
static String swapRepeated(char str[])
{
// Traverse through the
// length of the string
for (int i = 0; i < str.length - 1; i++)
{
char c = 0;
// Check if the two consecutive characters
// are vowels or consonants
if ((isVowel(str[i]) && isVowel(str[i + 1]))
|| (!isVowel(str[i]) && !isVowel(str[i + 1])))
{
// swap the two characters
c = str[i];
str[i] = str[i + 1];
str[i + 1] = c;
}
}
return String.valueOf(str);
}
// Driver code
public static void main(String[] args)
{
String str = "geeksforgeeks";
System.out.println(swapRepeated(str.toCharArray()));
}
}
// This code is contributed by 29AjayKumar
Python 3
# Python3 implementation of the above approach
# Function to check if a character is a vowel
def isVowel(c) :
c = c.lower();
if (c == 'a' or c == 'e' or c == 'i'
or c == 'o' or c == 'u') :
return True;
return False;
# Function to swap two consecutively
# repeated vowels or consonants
def swapRepeated(string) :
# Traverse through the length of the string
for i in range(len(string) - 1) :
# Check if the two consecutive characters
# are vowels or consonants
if ((isVowel(string[i]) and isVowel(string[i + 1])) or
(not(isVowel(string[i])) and not(isVowel(string[i + 1])))) :
# swap the two characters
(string[i],
string[i + 1]) = (string[i + 1],
string[i]);
string = "".join(string)
return string;
# Driver code
if __name__ == "__main__" :
string = "geeksforgeeks";
print(swapRepeated(list(string)));
# This code is contributed by Ryuga
C#
// C# implementation of the above approach
using System;
class GFG
{
// Function to check if a
// character is a vowel
static bool isVowel(char c)
{
c = char.ToLower(c);
if (c == 'a' || c == 'e' || c == 'i'
|| c == 'o' || c == 'u')
{
return true;
}
return false;
}
// Function to swap two consecutively
// repeated vowels or consonants
static String swapRepeated(char []str)
{
// Traverse through the
// length of the string
for (int i = 0; i < str.Length - 1; i++)
{
char c = (char)0;
// Check if the two consecutive characters
// are vowels or consonants
if ((isVowel(str[i]) && isVowel(str[i + 1]))
|| (!isVowel(str[i]) && !isVowel(str[i + 1])))
{
// swap the two characters
c = str[i];
str[i] = str[i + 1];
str[i + 1] = c;
}
}
return String.Join("",str);
}
// Driver code
public static void Main(String[] args)
{
String str = "geeksforgeeks";
Console.WriteLine(swapRepeated(str.ToCharArray()));
}
}
/* This code contributed by PrinciRaj1992 */
PHP
Javascript
geesfkogreesk