Leetcode题解之 —— 反转字符串中的元音字母

思路


思路一(耗时136ms)

双指针法

  • 左右指针
  • 步数调整
  • 元音字母字典
  • 大小写转换

题解


  • 解法一
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* @param {string} s
* @return {string}
*/
var reverseVowels = function (s) {
s = s.split('');

const baseMap = new Map([
['a', 'a'],
['e', 'e'],
['i', 'i'],
['o', 'o'],
['u', 'u'],
]);
let [left, right] = [0, s.length - 1];

while (left <= right) {
if (baseMap.has(s[left].toLowerCase()) && baseMap.has(s[right].toLowerCase())) {
[s[left], s[right]] = [s[right], s[left]];
left++;
right--;
}
else if (baseMap.has(s[left].toLowerCase()) && !baseMap.has(s[right].toLowerCase())) {
right--;
}
else if (!baseMap.has(s[left].toLowerCase()) && baseMap.has(s[right].toLowerCase())) {
left++;
}
else {
left++;
right--;
}
}

return s.join('');
};