Skip to content

反转字符串

简单

js
function reverseString(str) {
  return str.split('').reverse().join('');
}

const input = 'Hello, World!';
const reversed = reverseString(input);
console.log(reversed); // Output: '!dlroW ,olleH'

复杂度

在时间复杂度上,还有一种更优的解法是使用双指针法,它的时间复杂度为 O(n),其中 n 是字符串的长度。以下是使用双指针法反转字符串的最优解答:

javascript
function reverseString(str) {
  let left = 0;
  let right = str.length - 1;
  let reversed = str.split('');

  while (left < right) {
    const temp = reversed[left];
    reversed[left] = reversed[right];
    reversed[right] = temp;
    left++;
    right--;
  }

  return reversed.join('');
}

const input = 'Hello, World!';
const reversed = reverseString(input);
console.log(reversed); // Output: '!dlroW ,olleH'

在这个解答中,我们使用了两个指针 leftright,初始时分别指向字符串的首尾字符。然后,我们交换这两个指针所指向的字符,并向中间移动指针,直到 left 指针超过 right 指针。

这种双指针法的解法不需要额外的空间,只需要对原始字符串进行字符交换即可。它是一种原地修改字符串的方法,因此在空间复杂度上也是最优的解法。