344. 反转字符串
解题过程
INFO
题目链接 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题
javascript
/**
* @link https://leetcode.cn/problems/reverse-string/
* @title 344. 反转字符串
* @description 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
* 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题
* @param {character[]} s
* @return {void} Do not return anything, modify s in-place instead.
*/
// 解法一
// 思路:使用字符串 API reverse() 函数一行代码解决
var reverseString = function (s) {
s.reverse()
console.log(s)
}
// 解法二
// 思路:通过收尾索引位置向中间交换位置元素值做原地字符串数组值更换
var reverseString = function (s) {
// 记录首尾开始向中间交换位置的次数
let loop = Math.round(s.length / 2)
const lastIndex = s.length - 1
let index = 0
while (loop--) {
const temp = s[index]
s[index] = s[lastIndex - index]
s[lastIndex - index] = temp
index++
}
console.log(s)
}
reverseString(["h","e","l","l","o"]) // ["o","l","l","e","h"]
// reverseString(["H","a","n","n","a","h"]) // ["h","a","n","n","a","H"]
解题感受
第一眼看到这题,窃喜,这不是一行代码搞定的事嘛,字符串 API reverse() 直接搞定,然后又觉得可以试试最常用的循环解决,那就写了两种比较常见的解题思路。官方的解题思路涉及到了数组交换位置元素这个,太久没用导致我到忘记了