j

jaryue

V1

2023/03/23阅读:15主题:默认主题

leecode344字符串反转

leecode

题目描述

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 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"]

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/reverse-string 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

法1

使用双指针法:
使用两个指针一个从尾部遍历一个从头部遍历交换两个位置的值,用临时变量t
循环到中部len/2即可

for i := 0; i < len(s)/2; i++ {循环到中部len/2即可
 t:=s[i]//通过t交换两个值
 s[i]=s[len(s)-1-i]
 s[len(s)-1-i]=t
}

执行结果

法1

func reverseString(s []byte)  {
for i := 0; i < len(s)/2; i++ {循环到中部len/2即可
 t:=s[i]//通过t交换两个值
 s[i]=s[len(s)-1-i]
 s[len(s)-1-i]=t
}
}

执行用时: 28 ms , 在所有 Go 提交中击败了 81.46% 的用户 内存消耗: 6.3 MB , 在所有 Go 提交中击败了 92.18% 的用户 通过测试用例: 477 / 477 炫耀一下:\

优化:我们用一个变量来储存len这样就不用每次都运算一遍了,可以适当提高时间

func reverseString(s []byte) {
 l,t:=len(s),s[0]
 for i := 0; i < l/2; i++ {循环到中部len/2即可
  t = s[i]//通过t交换两个值
  s[i] = s[l-1-i]
  s[l-1-i] = t
 }
}

执行用时: 24 ms , 在所有 Go 提交中击败了 96.19% 的用户 内存消耗: 6.3 MB , 在所有 Go 提交中击败了 73.44% 的用户 通过测试用例: 477 / 477

分类:

后端

标签:

后端

作者介绍

j
jaryue
V1