345.反转字符串中的元音字母
链接:345.反转字符串中的元音字母
难度:Easy
标签:双指针、字符串
简介:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
题解 1 - typescript
- 编辑时间:2021-08-19
- 执行用时:96ms
- 内存消耗:45.4MB
- 编程语言:typescript
- 解法介绍:优化内存。
function reverseVowels(s: string): string {
const idxList: number[] = [];
const set = new Set(['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']);
for (let i = 0; i < s.length; i++) if (set.has(s[i])) idxList.push(i);
let ans = '';
for (let i = 0, pos = idxList.length - 1; i < s.length; i++) {
if (set.has(s[i])) ans += s[idxList[pos--]];
else ans += s[i];
}
return ans;
}
题解 2 - javascript
- 编辑时间:2020-04-07
- 执行用时:120ms
- 内存消耗:44.6MB
- 编程语言:javascript
- 解法介绍:构建元音集合进行倒序。
/**
* @param {string} s
* @return {string}
*/
var reverseVowels = function (s) {
const vowels = new Set(['a', 'e', 'i', 'o', 'u']);
let result = [...s];
let tempNum = [];
let tempStr = [];
for (let i = 0, len = s.length; i < len; i++) {
if (vowels.has(s[i].toLowerCase())) {
tempNum.push(i);
tempStr.push(s[i]);
}
}
tempNum = tempNum.reverse();
for (const [index, num] of tempNum.entries()) {
result.splice(num, 1, tempStr[index]);
}
return result.join('');
};
题解 3 - typescript
- 编辑时间:2021-08-19
- 执行用时:180ms
- 内存消耗:45.2MB
- 编程语言:typescript
- 解法介绍:优化内存。
function reverseVowels(s: string): string {
const set = new Set(['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']);
let l = 0;
let r = s.length - 1;
while (l < r) {
if (set.has(s[r]) && set.has(s[l])) {
s = s.substring(0, l) + s[r] + s.substring(l + 1, r) + s[l] + s.substring(r + 1);
l++;
r--;
}
if (!set.has(s[l])) l++;
if (!set.has(s[r])) r--;
}
return s;
}
题解 4 - typescript
- 编辑时间:2021-08-19
- 执行用时:88ms
- 内存消耗:46.3MB
- 编程语言:typescript
- 解法介绍:逐个判断并反向取值。
function reverseVowels(s: string): string {
const idxList: number[] = [];
const set = new Set(['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']);
for (let i = 0; i < s.length; i++) if (set.has(s[i])) idxList.push(i);
const idxSet = new Set(idxList);
let ans = '';
for (let i = 0, pos = idxList.length - 1; i < s.length; i++) {
if (idxSet.has(i)) ans += s[idxList[pos--]];
else ans += s[i];
}
return ans;
}