Dada una string str . La tarea es modificar la string intercambiando dos caracteres adyacentes si ambos son vocales o ambos son consonantes.
Ejemplos:
Entrada: str = “geeksforgeeks”
Salida: geesfkogreesk
Los alfabetos ‘e’ y ‘e’ en g ee ksforgeeks son vocales, por lo que se intercambian para que la string se convierta en geeksforgeeks .
Los alfabetos ‘k’ y ‘s’ en gee ks forgeeks son consonantes, por lo que se intercambian para que la string se convierta en geeskforgeeks .
Los alfabetos ‘k’ y ‘f’ en gees kf orgeeks son consonantes, por lo que se intercambian para que la string se convierta en geesfkorgeeks .
Los alfabetos ‘r’ y ‘g’ en geesfko rg eeks son consonantes, por lo que se intercambian para que la string se convierta en geeskfogreeks .
Los alfabetos ‘e’ y ‘e’ en geeskfogr eeks son vocales, por lo que se intercambian para que la string se convierta en geeskfogreeks .
Los alfabetos ‘k’ y ‘s’ en geeskfogreek ks son vocales, por lo que se intercambian para que la string se convierta en geeskfogreesk .
Entrada: str = “gefeg”
Salida: gefeg
No hay vocales ni consonantes continuas.
Acercarse:
- Recorra los caracteres de la string.
- Considere el carácter actual y el carácter siguiente.
- Si ambos caracteres son consonantes o ambos son vocales.
- Luego cambia los personajes.
- De lo contrario, continúe el proceso hasta el final de la string.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the above approach #include <bits/stdc++.h> 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
<?php // PHP implementation of the above approach // Function to check if a character is a vowel function isVowel($c) { $c = strtolower($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 function swapRepeated($str) { // Traverse through the length of the string for ($i = 0; $i < strlen($str) - 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 $t = $str[$i]; $str[$i]= $str[$i + 1]; $str[$i+1] = $t; } } return $str; } // Driver code $str = "geeksforgeeks"; echo swapRepeated($str); return 0; // This code is contributed by ChitraNayal ?>
Javascript
<script> // JavaScript implementation of the above approach // Function to check if a // character is a vowel function isVowel(c) { c = c.toLowerCase(); if (c === "a" || c === "e" || c === "i" || c === "o" || c === "u") { return true; } return false; } // Function to swap two consecutively // repeated vowels or consonants function swapRepeated(str) { // Traverse through the // length of the string for (var 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 var c = str[i]; str[i] = str[i + 1]; str[i + 1] = c; } } return str.join(""); } // Driver code var str = "geeksforgeeks"; document.write(swapRepeated(str.split(""))); </script>
geesfkogreesk