Open
Description
先明确题目要求:
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
const reverseString = function(s) {
s.reverse()
}
这道题可不是为了考察我们是否知道 reverse()
这个 API,我们来看不借助内置方法如何解题。
双指针
- 借助双指针left、right分别指向头尾。
- 两个指针不断夹逼,进行交换位置完成反转。
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)