跳转至

3856. 移除尾部元音字母

题目描述

给定一个由小写英文字母组成的字符串 s

返回移除字符串 s 尾部 所有元音字母 后得到的字符串。

元音字母包括字符 'a''e''i''o''u'

 

示例 1:

输入: s = "idea"

输出: "id"

解释:

移除 "idea" 后,得到字符串 "id"

示例 2:

输入: s = "day"

输出: "day"

解释:

字符串 "day" 尾部没有元音字母。

示例 3:

输入: s = "aeiou"

输出: ""

解释:

移除 "aeiou" 后,得到字符串 ""

 

提示:

  • 1 <= s.length <= 100
  • s 仅由小写英文字母组成。

解法

方法一:逆序遍历

我们从字符串的末尾开始逆序遍历,直到遇到第一个非元音字母为止。然后返回从字符串开头到该位置的子字符串即可。

时间复杂度 \(O(n)\),其中 \(n\) 是字符串的长度。空间复杂度 \(O(1)\)

1
2
3
4
5
6
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]
1
2
3
4
5
6
7
8
9
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);
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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);
    }
};
1
2
3
4
5
6
7
func trimTrailingVowels(s string) string {
    i := len(s) - 1
    for i >= 0 && strings.IndexByte("aeiou", s[i]) != -1 {
        i--
    }
    return s[:i+1]
}
1
2
3
4
5
6
7
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);
}

评论