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