Check if a string can be converted to another string by replacing vowels and consonants

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

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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. 

chevron_right


Output:

Yes


My Personal Notes arrow_drop_up

Striver(underscore)79 at Codechef and codeforces D

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.





Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.