给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。
元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现不止一次。
示例 1:
输入:s = “hello”
输出:“holle”
示例 2:
输入:s = “leetcode”
输出:“leotcede”
提示:
1 <= s.length <= 3 * 105
s 由 可打印的 ASCII 字符组成
class Solution {
public:
string reverseVowels(string s) {
unordered_set<char> S = {'a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U'};
for(int i = 0, j = s.size() - 1; i < j; i ++, j -- ) {
while(S.find(s[i]) == S.end() && i < j) {
i ++;
}
while(S.find(s[j]) == S.end() && i < j) {
j --;
}
if(i < j) swap(s[i], s[j]);
}
return s;
}
};