Dadas dos strings S1 y S2, solo puede cambiar un carácter en cualquier posición a cualquier vocal si es una vocal o a una consonante, si es una consonante. La tarea es verificar si una string S1 se puede cambiar a S2 o S2 se puede cambiar a S1.
Ejemplos:
Entrada: S1 = “abcgle”, S2 = “ezggli”
Salida: Sí
Cambiar ‘a’ por ‘e’, ’b’ por ‘z’, ‘c’ por ‘g’ y ‘e’ por ‘i’.
Entrada: S1 = “abc”, S2 = “cgth”
Salida: No
Enfoque: Se deben seguir las siguientes condiciones para resolver el problema anterior:
- La longitud de ambas cuerdas debe ser igual.
- En cada índice, el carácter de S1 y S2 debe ser vocal o consonante.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to check if a string can be converted // to other string by replacing vowels and consonants #include <bits/stdc++.h> using namespace std; // Function to check if the character // is vowel or not bool isVowel(char c) { if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') return true; return false; } // Function that checks if a string can be // converted to another string bool checkPossibility(string s1, string s2) { // Find length of string int l1 = s1.length(); int l2 = s2.length(); // If length is not same if (l1 != l2) return false; // Iterate for every character for (int i = 0; i < l1; i++) { // If both vowel if (isVowel(s1[i]) && isVowel(s2[i])) continue; // Both are consonants else if (!(isVowel(s1[i])) && !(isVowel(s2[i]))) continue; else return false; } return true; } // Driver Code int main() { string S1 = "abcgle", S2 = "ezggli"; if (checkPossibility(S1, S2)) cout << "Yes"; else cout << "No"; return 0; }
Java
// Java program to check if a string // can be converted to other string // by replacing vowels and consonants class GfG { // Function to check if the character // is vowel or not static boolean isVowel(char c) { if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') return true; return false; } // Function that checks if a string can be // converted to another string static boolean checkPossibility(String s1, String s2) { // Find length of string int l1 = s1.length(); int l2 = s2.length(); // If length is not same if (l1 != l2) return false; // Iterate for every character for (int i = 0; i < l1; i++) { // If both vowel if (isVowel(s1.charAt(i)) && isVowel(s2.charAt(i))) continue; // Both are consonants else if (!(isVowel(s1.charAt(i))) && !(isVowel(s2.charAt(i)))) continue; else return false; } return true; } // Driver Code public static void main(String[] args) { String S1 = "abcgle"; String S2 = "ezggli"; if (checkPossibility(S1, S2) == true) System.out.println("Yes"); else System.out.println("No"); } } // This code is contributed by Prerna saini.
Python3
# Python3 program to check if a string can # be converted to other string by replacing # vowels and consonants # Function to check if the character # is vowel or not def isVowel(c): if (c == 'a' or c == 'e' or c == 'i' or c == 'o' or c == 'u'): return True return False # Function that checks if a string can # be converted to another string def checkPossibility(s1, s2): # Find length of string l1 = len(s1) l2 = len(s2) # If length is not same if (l1 != l2): return False # Iterate for every character for i in range(l1): # If both vowel if (isVowel(s1[i]) and isVowel(s2[i])): continue # Both are consonants elif ((isVowel(s1[i])) == False and (isVowel(s2[i]) == False)): continue else: return False return True # Driver Code S1, S2 = "abcgle", "ezggli" if (checkPossibility(S1, S2)): print("Yes") else: print("No") # This code is contributed by Mohit Kumar
C#
// C# program to check if a string // can be converted to other string // by replacing vowels and consonants using System; class GfG { // Function to check if the character // is vowel or not static bool isVowel(char c) { if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') return true; return false; } // Function that checks if a string can be // converted to another string static bool checkPossibility(string s1, string s2) { // Find length of string int l1 = s1.Length ; int l2 = s2.Length ; // If length is not same if (l1 != l2) return false; // Iterate for every character for (int i = 0; i < l1; i++) { // If both vowel if (isVowel(s1[i]) && isVowel(s2[i])) continue; // Both are consonants else if (!(isVowel(s1[i])) && !(isVowel(s2[i]))) continue; else return false; } return true; } // Driver Code public static void Main() { string S1 = "abcgle"; string S2 = "ezggli"; if (checkPossibility(S1, S2) == true) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This code is contributed by Ryuga.
Javascript
<script> // JavaScript program to check if a string can be converted // to other string by replacing vowels and consonants // Function to check if the character // is vowel or not function isVowel(c) { if (c === "a" || c === "e" || c === "i" || c === "o" || c === "u") return true; return false; } // Function that checks if a string can be // converted to another string function checkPossibility(s1, s2) { // Find length of string var l1 = s1.length; var l2 = s2.length; // If length is not same if (l1 !== l2) return false; // Iterate for every character for (var i = 0; i < l1; i++) { // If both vowel if (isVowel(s1[i]) && isVowel(s2[i])) continue; // Both are consonants else if (!isVowel(s1[i]) && !isVowel(s2[i])) continue; else return false; } return true; } // Driver Code var S1 = "abcgle", S2 = "ezggli"; if (checkPossibility(S1, S2)) document.write("Yes"); else document.write("No"); // This code is contributed by rdtank. </script>
Yes
Complejidad de tiempo: O(n), ya que estamos usando un ciclo para atravesar n veces, donde n es el tamaño de una string dada s1.
Espacio auxiliar: O(n), ya que estamos pasando la string completa como valor al método.