返回

一招教你颠覆LeetCode:庖丁解牛 151. 反转字符串

前端

庖丁解牛:LeetCode 151. 反转字符串

引言:从庖丁解牛到 LeetCode
我们从「庖丁解牛」中汲取灵感,以「刀」为指针,将字符串分成两部分,然后左右开弓,灵活翻转,最终实现字符串的反转。

一、双指针法
算法步骤如下:

  1. 定义两个指针,分别指向字符串的开头和结尾。
  2. 反复交换两个指针指向的字符,直到指针相遇或交叉。

代码实现:

/**
 * 双指针反转字符串
 * @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更简单易用,但灵活性较差。

希望这篇文章对您有所帮助。如果您有任何问题或建议,请随时评论或私信我。