问题描述 链接到标题
解题思路 链接到标题
双指针法,使用unordered_set
(底层实现为哈希表)来判断是否是元音字母。
代码 链接到标题
class Solution {
public:
string reverseVowels(string s) {
unordered_set<char> mset{'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'};
int l = 0, r = s.size() - 1;
while (l <= r) {
if (mset.find(s[l]) != mset.end() && mset.find(s[r]) != mset.end()) {
char tmp = s[l];
s[l++] = s[r];
s[r--] = tmp;
} else if (mset.find(s[l]) != mset.end() && mset.find(s[r]) == mset.end())
r--;
else if (mset.find(s[l]) == mset.end() && mset.find(s[r]) != mset.end())
l++;
else {
r--;
l++;
}
}
return s;
}
};