Given two strings S1 and S2, you are allowed only to change a character at any position to any vowel if it is a vowel or to a consonant, if it is a consonant. The task is to check if a string S1 can be changed to S2 or S2 can be changed to S1.
Examples:
Input: S1 = “abcgle”, S2 = “ezggli”
Output: Yes
Change ‘a’ to ‘e’, ‘b’ to ‘z’, ‘c’ to ‘g’ and ‘e’ to ‘i’.
Input: S1 = “abc”, S2 = “cgth”
Output: No
Approach: The following conditions should be followed to solve the above problem:
- The length of both the string should be equal.
- At every index, the character of S1 and S2 should be both vowel or consonant.
Below is the implementation of the above approach:
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
Time Complexity: O(n), as we are using a loop to traverse n times, where n is the size of a given string s1.
Auxiliary Space: O(n), as we are passing the whole string as a value to the method.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!