javascript-leetcode icon indicating copy to clipboard operation
javascript-leetcode copied to clipboard

344. 反转字符串

Open Geekhyt opened this issue 4 years ago • 0 comments

原题链接

先明确题目要求:

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

const reverseString = function(s) {
    s.reverse()
}

这道题可不是为了考察我们是否知道 reverse() 这个 API,我们来看不借助内置方法如何解题。

双指针

  1. 借助双指针left、right分别指向头尾。
  2. 两个指针不断夹逼,进行交换位置完成反转。
const reverseString = function (s) {
    let left = 0, right = s.length - 1;
    while (left < right) {
        [s[left], s[right]] = [s[right], s[left]]
        left++
        right--
    }
}
  • 时间复杂度: O(n)
  • 空间复杂度: O(1)

Geekhyt avatar Feb 22 '21 06:02 Geekhyt