文章目录
一、题目
345. Reverse Vowels of a String
Given a string s, reverse only all the vowels in the string and return it.
The vowels are 'a', 'e', 'i', 'o', and 'u', and they can appear in both lower and upper cases, more than once.
Example 1:
Input: s = "hello"
Output: "holle"
Example 2:
Input: s = "leetcode"
Output: "leotcede"
Constraints:
1 <= s.length <= 3 * 105
s consist of printable ASCII characters.
二、题解
双指针思路,定义左指针left和右指针right
cpp
class Solution {
public:
string reverseVowels(string s) {
int n = s.length();
unordered_map<char,int> map;
map['A'] = 1;
map['a'] = 1;
map['E'] = 1;
map['e'] = 1;
map['I'] = 1;
map['i'] = 1;
map['O'] = 1;
map['o'] = 1;
map['U'] = 1;
map['u'] = 1;
int left = 0;
int right = n - 1;
while(left < right){
while(left < n && !map.count(s[left])) left++;
while(right > -1 && !map.count(s[right])) right--;
if(left < right) swap(s[left++],s[right--]);
}
return s;
}
};