Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
示例 1:
输入:s = ["h","e","l","l","o"]
输出:["o","l","l","e","h"]
示例 2:
输入:s = ["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]
提示:
-
<= s.length <= s[i]都是ASCII码表中的可打印字符
思路分析
方法一
可使用数组的现有的 API reverse 方法,即可将数组逆转。
MDN释义:
reverse方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
方法二
- 定义
start和end两个指针; - 将
start和end位置的元素互换位置,然后将start向右移动,即start++;将end向左移动,即end--。 - 交换位置持续到
start <= end为止,即为交换完毕。
AC 代码
方法一
/**
* @param {character[]} s
* @return {void} Do not return anything, modify s in-place instead.
*/
var reverseString = function(s) {
s.reverse()
};
结果:
- 执行结果: 通过
- 执行用时:72 ms, 在所有 JavaScript 提交中击败了99.20%的用户
- 内存消耗:48.4 MB, 在所有 JavaScript 提交中击败了6.22%的用户
- 通过测试用例:477 / 477
方法二
/**
* @param {character[]} s
* @return {void} Do not return anything, modify s in-place instead.
*/
var reverseString = function(s) {
let start = 0
let end = s.length - 1
while(start <= end) {
[s[start], s[end]] = [s[end], s[start]]
start++
end--
}
};
结果:
- 执行结果: 通过
- 执行用时:72 ms, 在所有 JavaScript 提交中击败了99.20%的用户
- 内存消耗:48.1 MB, 在所有 JavaScript 提交中击败了18.27%的用户
- 通过测试用例:477 / 477