3856. Trim Trailing Vowels
Description
You are given a string s that consists of lowercase English letters.
Return the string obtained by removing all trailing vowels from s.
The vowels consist of the characters 'a', 'e', 'i', 'o', and 'u'.
Example 1:
Input: s = "idea"
Output: "id"
Explanation:
Removing "idea", we obtain the string "id".
Example 2:
Input: s = "day"
Output: "day"
Explanation:
There are no trailing vowels in the string "day".
Example 3:
Input: s = "aeiou"
Output: ""
Explanation:
Removing "aeiou", we obtain the string "".
Constraints:
1 <= s.length <= 100sconsists of only lowercase English letters.
Solutions
Solution 1: Reverse Traversal
Thinking
Remove every trailing vowel. \(|s| \le 100\), so a right-to-left scan is enough.
The answer is a prefix ending at the last non-vowel, or empty if every letter is a vowel.
Skip \(\texttt{aeiou}\) from the right and return \(s[:i+1]\).
One pointer and constant extra space.
We traverse the string from the end in reverse order until we encounter the first non-vowel character. Then we return the substring from the beginning of the string up to that position.
The time complexity is \(O(n)\), where \(n\) is the length of the string. The space complexity is \(O(1)\).
1 2 3 4 5 6 | |
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |