📘 題目敘述
給你一個字串 s,它由小寫英文字母組成。
請回傳把 s 的所有結尾母音(trailing
vowels)都移除後得到的字串。
母音包含字元
'a'、'e'、'i'、'o'、'u'。
條件限制
1 <= s.length <= 100s只包含小寫英文字母
🧠 解題思路
我從字串最後面往前掃描。只要目前字元是母音,就代表它是結尾母音的一部分,我就把它刪掉並繼續往前看;一旦遇到第一個不是母音的字元,就可以直接回傳目前的
s。
所有變數
n:字串s的長度-
vol:母音表,依序放'a' 'e' 'i' 'o' 'u' i:從右往左掃描s的索引j:掃描vol用的索引check:判斷s[i]是否不是母音
🪜 主要流程步驟
1. 準備母音表,從字串尾端開始掃描
先建立母音表,並讓 i 從 n - 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;
}
};