Skip to content

344. 反转字符串 #36

Open
Open
@Geekhyt

Description

@Geekhyt

原题链接

先明确题目要求:

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions