 Open in App
Not now

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

• Difficulty Level : Medium
• Last Updated : 16 Jun, 2022

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

 ``

Output:

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

My Personal Notes arrow_drop_up
Related Articles