2062. Count Vowel Substrings of a String

#### QUESTION:

A substring is a contiguous (non-empty) sequence of characters within a string.

A vowel substring is a substring that only consists of vowels (‘a’, ‘e’, ‘i’, ‘o’, and ‘u’) and has all five vowels present in it.

Given a string word, return the number of vowel substrings in word.

Example 1:

``````Input: word = "aeiouu"
Output: 2
Explanation: The vowel substrings of word are as follows (underlined):
- "aeiouu"
- "aeiouu"
``````

Example 2:

``````Input: word = "unicornarihan"
Output: 0
Explanation: Not all 5 vowels are present, so there are no vowel substrings.
``````

Example 3:

``````Input: word = "cuaieuouac"
Output: 7
Explanation: The vowel substrings of word are as follows (underlined):
- "cuaieuouac"
- "cuaieuouac"
- "cuaieuouac"
- "cuaieuouac"
- "cuaieuouac"
- "cuaieuouac"
- "cuaieuouac"
``````

Constraints:

``````1 <= word.length <= 100
word consists of lowercase English letters only.
``````

#### SOLUTION:

``````class Solution {
func countVowelSubstrings(_ word: String) -> Int {
if word.count < 5 {
return 0
}
var wordArr:[Character] = Array(word)
var arr:[Character] = ["a","i","e","o","u"]
var arrTmp:[Bool] = Array(repeating: false, count: 5)
var result:Int = 0
for indexI in 0...wordArr.count - 5 {
if (arr.contains(wordArr[indexI])) {
arrTmp[arr.firstIndex(of: wordArr[indexI])!] = true
var indexJ = indexI + 1
while indexJ < wordArr.count && arr.contains(wordArr[indexJ]) {
arrTmp[arr.firstIndex(of: wordArr[indexJ])!] = true
if arrTmp && arrTmp && arrTmp && arrTmp && arrTmp {
result += 1
}
indexJ += 1
}
arrTmp = Array(repeating: false, count: 5)
}
}
return result
}
}
``````