linye's Blog

全端工程師心得分享

0%

[LeetCode]344. Reverse String

Algorithm I 筆記撰寫計畫

敘述

這是 Algorithm I 的第四天第一個題目,總共有兩題。

  • 難度: Easy
  • 花費時間: 30min
  • 題目

傳入一個包含字母的陣列,把陣列原地(in-place)反轉。

空間複雜度必須為 O(1)

點我開啟限制與範例

限制:

Example 1:

1
2
Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]

Example 2:

1
2
Input: s = ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]

筆記

這道題使用 Two Pointer 非常的簡單,作法如下:

  • Pointer 1: 遍歷陣列到中間
  • Pointer 2: 反向遍歷陣列到中間

每次迴圈把指針 element 交換,再推進 Pointer 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* @param {character[]} s
* @return {void} Do not return anything, modify s in-place instead.
*/
var reverseString = function (s) {
let temp;
for (let i = 0; i < Math.floor(s.length / 2); i++) {
temp = s[i];
s[i] = s[s.length - i - 1];
s[s.length - i - 1] = temp;
}

// console.log(s)
};

下面也有更簡單的做法,一行完成,哈哈哈。

1
2
3
4
5
6
7
/**
* @param {character[]} s
* @return {void} Do not return anything, modify s in-place instead.
*/
var reverseString = function(s) {
s.reverse();
};

成績

Two Pointers 成績

內建函式 reverse() 寫法成績

點我開啟舊寫法/失敗寫法