344. 反转字符串
方法1 「reverse」
var reverseString = function (s) {s.reverse();};
注解

方法2 「双指针」
var reverseString = function(s) {
let l = 0, r = s.length - 1;
while (l < r) {
[s[l], s[r]] = [s[r], s[l]];
l++; r--;
}
};
注解
头尾指针不断往中间移动,每次走一步,每走一步都将对应的值交换,直到两指针相撞。


方法3 「递归」
var reverseString = function(s) {
const convert = (l, r) => {
if (l >= r) return;
[s[l], s[r]] = [s[r], s[l]];
convert(l + 1, r - 1);
}
convert(0, s.length - 1);
};
注解
思路和双指针是相同的,核心都是遍历,只不过遍历的方式不一样,方法2 使用的是循环来进行遍历,而方法3 使用的是递归。
- 明确递归的出口
if (l >= r) return;
- 注意点
convert(l + 1, r - 1); // √
convert(++l, --r); // √
convert(l++, r--); // ×

