在 JavaScript 中,反转字符串

在 JavaScript 中,反转字符串是一个常见的算法问题,以下是几种常见的实现方法:

方法 1:使用数组 API (最简洁)

利用字符串的 split() 方法转数组,数组的 reverse() 反转,再用 join() 转回字符串:

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

// 示例
console.log(reverseString("hello")); // 输出:"olleh"
console.log(reverseString("abcdefg")); // 输出:"gfedcba"

方法 2:双指针遍历(原地反转,适合数组形式输入)

如果输入是字符数组(如 LeetCode 相关题目),可通过双指针交换首尾元素实现原地反转:

function reverseString(s) {
  let left = 0;
  let right = s.length - 1;
  while (left < right) {
    // 交换左右指针的字符
    [s[left], s[right]] = [s[right], s[left]];
    left++;
    right--;
  }
  return s; // 注意:这里会直接修改原数组
}

// 示例
console.log(reverseString(["h","e","l","l","o"])); // 输出:["o","l","l","e","h"]

方法 3:循环拼接(不依赖 API,手动实现)

通过从后往前遍历字符串,拼接字符得到反转结果:

function reverseString(s) {
  let result = '';
  for (let i = s.length - 1; i >= 0; i--) {
    result += s[i];
  }
  return result;
}

// 示例
console.log(reverseString("hello")); // 输出:"olleh"

方法 4:递归实现

利用递归逐步拼接首尾字符与首字符:

function reverseString(s) {
  if (s.length <= 1) return s;
  return reverseString(s.slice(1)) + s[0];
}

// 示例
console.log(reverseString("abc")); // 输出:"cba"

总结

  • 最简洁:推荐方法 1(split-reverse-join 组合),适合处理字符串输入。
  • 原地反转:方法 2 适合字符数组,无额外空间开销。
  • 手动控制:方法 3 适合理解反转逻辑,无 API 依赖。
  • 递归:方法 4 思路清晰,但处理长字符串可能有栈溢出风险。

根据实际场景选择即可,日常开发中方法 1 最常用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值