3856. Trim Trailing Vowels

練習日期:2026-03-01

難度:Easy

類型:String、Weekly Contest 491

📘 題目敘述

給你一個字串 s,它由小寫英文字母組成。

請回傳把 s 的所有結尾母音(trailing vowels)都移除後得到的字串。

母音包含字元 'a''e''i''o''u'

條件限制

  • 1 <= s.length <= 100
  • s 只包含小寫英文字母

🧠 解題思路

我從字串最後面往前掃描。只要目前字元是母音,就代表它是結尾母音的一部分,我就把它刪掉並繼續往前看;一旦遇到第一個不是母音的字元,就可以直接回傳目前的 s

所有變數

  • n:字串 s 的長度
  • vol:母音表,依序放 'a' 'e' 'i' 'o' 'u'
  • i:從右往左掃描 s 的索引
  • j:掃描 vol 用的索引
  • check:判斷 s[i] 是否不是母音

🪜 主要流程步驟

1. 準備母音表,從字串尾端開始掃描

先建立母音表,並讓 in - 1 走到 0

2. 檢查 s[i] 是不是母音

用內層迴圈掃過母音表,若是母音就 erase 掉。

3. 一旦遇到不是母音的字元就回傳

代表結尾母音區段已處理完,直接回傳。

4. 如果整個字串都是母音

最後會變成空字串 "",直接回傳即可。

⏱️ 複雜度

  • 時間複雜度:最壞可視為 O(n^2)
  • 空間複雜度:O(1)

💻 程式碼實作

class Solution {
public:
    string trimTrailingVowels(string s) {
        int n = s.size();
        char vol[5] = {'a', 'e', 'i', 'o', 'u'};
        for (int i = n - 1; i >= 0; i--) {
            bool check = true;
            for (int j = 0; j < 5; j++) {
                if (s[i] == vol[j]) {
                    s.erase(s.begin() + i);
                    check = false;
                    break;
                }
            }
            if (check) {
                return s;
            }
        }
        return s;
    }
};

https://leetcode.com/problems/trim-trailing-vowels/

作者:scottnick
撰寫日期:2026-03-01
類別:
原文連結:https://scottnick.github.io/cpp-notes/all%20problems/3856-trim-trailing-vowels.html