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++ 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 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 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# 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. |
<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.