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++
// 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 notbool 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 stringbool 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 Codeint 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 notdef 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 stringdef 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 CodeS1, 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 zambiatek!



