Description
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.
Code
One Pass without sliding window
Time Complexity: , Space Complexity:
對於這個解法我只有佩服,沒有其他的想法。
當五個母音都存在時且都在 last_consonant
的後面時 ,getMin(lastSeen)
就會大於 last_consonant
,以 cuaieuouac
為例:
當 iterate 到 cuaieuo
時,五個母音都集滿了,這時 last_consonant
指向 c
,而 getMin(lastSeen)
指向 a
,所以 res += 2
,因為 uaieuo
和 aieuo
都是答案。
The atMost Trick
Time Complexity: , Space Complexity: