題目連結:345. Reverse Vowels of a String
解題思路
這題就很直覺得掃過兩遍,第一遍收集 Vowels,第二變把 Vowels 用相反的順序放回去,真有什麼好說的東西的話應該是寫個 helper function isVowels() 會方便一些。
程式碼
class Solution {
private:
bool isVowels(char c) {
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')
return true;
if (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U')
return true;
return false;
}
public:
string reverseVowels(string s) {
int n = s.size();
queue<char> q;
for (int i = 0; i < n; i++)
if (isVowels(s[i]))
q.push(s[i]);
for (int i = n - 1; i >= 0; i--)
if (isVowels(s[i])) {
s[i] = q.front();
q.pop();
}
return s;
}
};