小于 1 分钟
这是一个经典的“双指针”问题。我们可以使用两个指针,一个从数组开头开始(左指针),一个从数组末尾开始(右指针),互相交换元素,然后向中间移动,直到两个指针相遇。
/**
* @param {character[]} s
* @return {void} Do not return anything, modify s in-place instead.
*/
var reverseString = function(s) {
// 初始化左指针在起始位置,右指针在末尾位置
let left = 0;
let right = s.length - 1;
// 当左指针小于右指针时,持续交换
while (left < right) {
// 使用 ES6 的解构赋值语法交换元素,简单且直观
[s[left], s[right]] = [s[right], s[left]];
// 移动指针
left++;
right--;
}
};