LeetCode题解 => 344.反转字符串(五十六)

反转字符串

一、LeetCode题解

瞧一瞧~
  • 博健的LeetCode题解:Gitbook版本传送门
  • 博健的LeetCode题解:CSDN传送门
  • 前端进阶笔记:Gitbook传送门

二、算法题

题目

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

示例 1:

输入:["h","e","l","l","o"]
输出:["o","l","l","e","h"]

示例 2:

输入:["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]

解法一(Api)

  • 按题意,直接使用数组Api即可,如果让你返回一个字符串形式怎么办?
    • var res = a.split("").reverse().join("");
  • 这种方法虽然暴力,但是对简单的字符串完全有效(但面试官仍希望你要提出除此以外的解决方式)
var reverseString = function(s) {
    var res = s.reverse()
    return res
};

LeetCode题解 => 344.反转字符串(五十六)_第1张图片

解法二(双指针)

  • 左边界 和 右边界进行互换,然后向内移动
var reverseString = function(s) {
    let i = 0,
        x = s.length -1;
    while (i < x) {
        [s[i], s[x]] = [s[x], s[i]]
        i++
        x--
    }
};

LeetCode题解 => 344.反转字符串(五十六)_第2张图片

解法二(变式)

var reverseString = function(s) {
    for(let i = 0;i < s.length / 2; i++){
      [s[i], s[s.length - 1 - i]] = [s[s.length - 1 - i], s[i]]
    }
    return s
};

你可能感兴趣的:(#,LeetCode题解系列)