跳至主要內容

Mr.He小于 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--;
    }
};