Welcome to Subscribe On Youtube
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
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)$.
-
class Solution { public String trimTrailingVowels(String s) { int i = s.length() - 1; while (i >= 0 && "aeiou".indexOf(s.charAt(i)) != -1) { i--; } return s.substring(0, i + 1); } } -
class Solution { public: string trimTrailingVowels(string s) { int i = s.size() - 1; while (i >= 0 && string("aeiou").find(s[i]) != string::npos) { i--; } return s.substr(0, i + 1); } }; -
class Solution: def trimTrailingVowels(self, s: str) -> str: i = len(s) - 1 while i >= 0 and s[i] in "aeiou": i -= 1 return s[: i + 1] -
func trimTrailingVowels(s string) string { i := len(s) - 1 for i >= 0 && strings.IndexByte("aeiou", s[i]) != -1 { i-- } return s[:i+1] } -
function trimTrailingVowels(s: string): string { let i = s.length - 1; while (i >= 0 && 'aeiou'.indexOf(s[i]) !== -1) { i--; } return s.slice(0, i + 1); }