返回
一招教你颠覆LeetCode:庖丁解牛 151. 反转字符串
前端
2024-02-19 22:28:19
庖丁解牛:LeetCode 151. 反转字符串
引言:从庖丁解牛到 LeetCode
我们从「庖丁解牛」中汲取灵感,以「刀」为指针,将字符串分成两部分,然后左右开弓,灵活翻转,最终实现字符串的反转。
一、双指针法
算法步骤如下:
- 定义两个指针,分别指向字符串的开头和结尾。
- 反复交换两个指针指向的字符,直到指针相遇或交叉。
代码实现:
/**
* 双指针反转字符串
* @param {string} s
* @return {string}
*/
const reverseString = (s) => {
// 定义左右指针
let left = 0;
let right = s.length - 1;
// 反复交换指针指向的字符
while (left < right) {
let temp = s[left];
s[left] = s[right];
s[right] = temp;
// 更新指针位置
left++;
right--;
}
// 返回反转后的字符串
return s;
};
二、内置API 法
/**
* 使用内置API反转字符串
* @param {string} s
* @return {string}
*/
const reverseString = (s) => {
return s.split('').reverse().join('');
};
三、LeetCode 实战
题目:151. 反转字符串
给定一个字符串,编写一个函数来反转字符串中的字符。
示例:
输入: "hello"
输出: "olleh"
解题思路:
/**
* LeetCode 151. 反转字符串
* @param {string} s
* @return {string}
*/
const reverseString = (s) => {
// 方法一:双指针法
let left = 0;
let right = s.length - 1;
while (left < right) {
let temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
}
return s;
// 方法二:使用内置API
// return s.split('').reverse().join('');
};
四、总结
双指针法和内置API都是解决 LeetCode 151. 反转字符串的有效方法。双指针法更具通用性,但需要更多的代码实现。内置API更简单易用,但灵活性较差。
希望这篇文章对您有所帮助。如果您有任何问题或建议,请随时评论或私信我。