# Check whether all the substrings have number of vowels atleast as that of consonants

Given a string str, the task is to check whether all the substrings of length ≥ 2 have the number of vowels at least as that of the number of consonants.

Examples:

Input: str = “acaba”
Output: No
The substring “cab” has 2 consonants and a single vowel.

Input: str = “aabaa”
Output: Yes

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: There are only two cases where the given condition is not satisfied:

1. When there are two consecutive consonants as in this case a substring of size 2 can have 2 consonants and no vowels.
2. When there is a vowel surrounded by two consonants, in this case a substring of length 3 is possible with 2 consonants and 1 vowels.

All the other cases will always satisfy the given conditions.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function that returns true ` `// if character ch is a vowel ` `bool` `isVowel(``char` `ch) ` `{ ` `    ``switch` `(ch) { ` `    ``case` `'a'``: ` `    ``case` `'e'``: ` `    ``case` `'i'``: ` `    ``case` `'o'``: ` `    ``case` `'u'``: ` `        ``return` `true``; ` `    ``} ` `    ``return` `false``; ` `} ` ` `  `// Compares two integers according ` `// to their digit sum ` `bool` `isSatisfied(string str, ``int` `n) ` `{ ` ` `  `    ``// Check if there are two ` `    ``// consecutive consonants ` `    ``for` `(``int` `i = 1; i < n; i++) { ` `        ``if` `(!isVowel(str[i]) ` `            ``&& !isVowel(str[i - 1])) { ` `            ``return` `false``; ` `        ``} ` `    ``} ` ` `  `    ``// Check if there is any vowel ` `    ``// surrounded by two consonants ` `    ``for` `(``int` `i = 1; i < n - 1; i++) { ` `        ``if` `(isVowel(str[i]) ` `            ``&& !isVowel(str[i - 1]) ` `            ``&& !isVowel(str[i + 1])) { ` `            ``return` `false``; ` `        ``} ` `    ``} ` ` `  `    ``return` `true``; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``string str = ``"acaba"``; ` `    ``int` `n = str.length(); ` ` `  `    ``if` `(isSatisfied(str, n)) ` `        ``cout << ``"Yes"``; ` `    ``else` `        ``cout << ``"No"``; ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `class` `GFG ` `{ ` ` `  `// Function that returns true ` `// if character ch is a vowel ` `static` `boolean` `isVowel(``char` `ch) ` `{ ` `    ``switch` `(ch)  ` `    ``{ ` `        ``case` `'a'``: ` `        ``case` `'e'``: ` `        ``case` `'i'``: ` `        ``case` `'o'``: ` `        ``case` `'u'``: ` `            ``return` `true``; ` `    ``} ` `    ``return` `false``; ` `} ` ` `  `// Compares two integers according ` `// to their digit sum ` `static` `boolean` `isSatisfied(``char``[] str, ``int` `n) ` `{ ` ` `  `    ``// Check if there are two ` `    ``// consecutive consonants ` `    ``for` `(``int` `i = ``1``; i < n; i++) ` `    ``{ ` `        ``if` `(!isVowel(str[i]) && ` `            ``!isVowel(str[i - ``1``])) ` `        ``{ ` `            ``return` `false``; ` `        ``} ` `    ``} ` ` `  `    ``// Check if there is any vowel ` `    ``// surrounded by two consonants ` `    ``for` `(``int` `i = ``1``; i < n - ``1``; i++) ` `    ``{ ` `        ``if` `(isVowel(str[i]) &&  ` `            ``!isVowel(str[i - ``1``]) &&  ` `            ``!isVowel(str[i + ``1``]))  ` `        ``{ ` `            ``return` `false``; ` `        ``} ` `    ``} ` `    ``return` `true``; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String []args)  ` `{ ` `    ``String str = ``"acaba"``; ` `    ``int` `n = str.length(); ` ` `  `    ``if` `(isSatisfied(str.toCharArray(), n)) ` `        ``System.out.println(``"Yes"``); ` `    ``else` `        ``System.out.println(``"No"``); ` `} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

## Python3

 `# Python3 implementation of the approach ` ` `  `# Function that returns true ` `# if acter ch is a vowel ` `def` `isVowel(ch): ` `    ``if` `ch ``in` `[``'i'``, ``'a'``, ``'e'``, ``'o'``, ``'u'``]: ` `        ``return` `True` `    ``else``: ` `        ``return` `False` ` `  `# Compares two integers according ` `# to their digit sum ` `def` `isSatisfied(st, n): ` `     `  `    ``# Check if there are two ` `    ``# consecutive consonants ` `    ``for` `i ``in` `range``(``1``, n): ` `        ``if` `(isVowel(st[i]) ``=``=` `False` `and`  `            ``isVowel(st[i ``-` `1``]) ``=``=` `False``): ` `            ``return` `False` `             `  `    ``# Check if there is any vowel ` `    ``# surrounded by two consonants ` `    ``for` `i ``in` `range``(``1``, n ``-` `1``): ` `        ``if` `(isVowel(st[i]) ``and`  `            ``isVowel(st[i ``-` `1``]) ``=``=` `False` `and`  `            ``isVowel(st[i ``+` `1``]) ``=``=` `False` `): ` `            ``return` `False` `    ``return` `True` ` `  `# Driver code ` `st ``=` `"acaba"` `n ``=` `len``(st) ` ` `  `if` `(isSatisfied(st, n)): ` `    ``print``(``"Yes"``) ` `else``: ` `    ``print``(``"No"``) ` ` `  `# This code is contributed by Mohit Kumar `

## C#

 `// C# implementation of the approach ` `using` `System; ` `     `  `class` `GFG ` `{ ` ` `  `// Function that returns true ` `// if character ch is a vowel ` `static` `bool` `isVowel(``char` `ch) ` `{ ` `    ``switch` `(ch)  ` `    ``{ ` `        ``case` `'a'``: ` `        ``case` `'e'``: ` `        ``case` `'i'``: ` `        ``case` `'o'``: ` `        ``case` `'u'``: ` `            ``return` `true``; ` `    ``} ` `    ``return` `false``; ` `} ` ` `  `// Compares two integers according ` `// to their digit sum ` `static` `bool` `isSatisfied(``char``[] str, ``int` `n) ` `{ ` ` `  `    ``// Check if there are two ` `    ``// consecutive consonants ` `    ``for` `(``int` `i = 1; i < n; i++) ` `    ``{ ` `        ``if` `(!isVowel(str[i]) && ` `            ``!isVowel(str[i - 1])) ` `        ``{ ` `            ``return` `false``; ` `        ``} ` `    ``} ` ` `  `    ``// Check if there is any vowel ` `    ``// surrounded by two consonants ` `    ``for` `(``int` `i = 1; i < n - 1; i++) ` `    ``{ ` `        ``if` `(isVowel(str[i]) &&  ` `            ``!isVowel(str[i - 1]) &&  ` `            ``!isVowel(str[i + 1]))  ` `        ``{ ` `            ``return` `false``; ` `        ``} ` `    ``} ` `    ``return` `true``; ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main(String []args)  ` `{ ` `    ``String str = ``"acaba"``; ` `    ``int` `n = str.Length; ` ` `  `    ``if` `(isSatisfied(str.ToCharArray(), n)) ` `        ``Console.WriteLine(``"Yes"``); ` `    ``else` `        ``Console.WriteLine(``"No"``); ` `} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

Output:

```No
```

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

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.

Improved By : mohit kumar 29, Rajput-Ji