题干
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例1:
输入:"hello"
输出:"holle"
复制代码
解法:
思路:其实一看到这种类似于替换的题,我们应该首先想到的就是双指针,前指针向后遍历,后指针向前遍历,在每次循环初始时判断前后指针对应的值:
- 如果都是元音,交换,且指针前/后移
- 分别单独判断前后指针是否是原因字母,若是则保留当前指针位置,若不是则前/后移
代码实现:
双指针实现:
执行用时:112 ms, 在所有 JavaScript 提交中击败了47.92%的用户
内存消耗:42.8 MB, 在所有 JavaScript 提交中击败了96.04%的用户
var reverseVowels = function (s) {
let arrs = s.split('')
let arr = ['a', 'o', 'e', 'i', 'u', 'A', 'O', 'E', 'I', 'U']
let begin = 0, end = s.length - 1;
while (begin < end) {
if (arr.includes(s[begin]) && arr.includes(s[end])) {
// 将字符串转为数组,进行元素的替换,最后再转会字符串
let temp = arrs[begin];
arrs[begin] = arrs[end];
arrs[end] = temp;
begin += 1;
end -= 1;
} else {
if (arr.includes(arrs[begin])) {
begin = begin
} else {
begin += 1
}
if (arr.includes(arrs[end])) {
end = end
} else {
end -= 1
}
}
}
return arrs.join('');
};
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END