在 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 最常用。

2万+

被折叠的 条评论
为什么被折叠?



