【golang】leetcode初级-反转字符串&整数反转

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

提示:
1 <= s.length <= 105
s[i] 都是 ASCII 码表中的可打印字符
解题思路
很简单的思路,遍历二分之一的数组,让前半部分与后半部分一一交换
代码

func reverseString(s []byte){ var n int=len(s)-1 for i:=0; i<=n/2; i++{ s[i],s[n-i]=s[n-i],s[i] } }

复杂度分析
时间复杂度:O(N),其中 N 为字符数组的长度。一共执行了 N/2 次的交换。
空间复杂度:O(1)。只使用了常数空间来存放若干变量。
第二题 整数反转 题目信息
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [?2^31,2^31 ? 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0

提示:
-2^31 <= x <= 2^31 - 1
解题思路
https://leetcode-cn.com/probl...
代码
func reverse(x int) (rev int) { for x != 0 { if rev < math.MinInt32/10 || rev > math.MaxInt32/10 { return 0 } digit := x % 10 x /= 10 rev = rev*10 + digit } return }作者:LeetCode-Solution 链接:https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-by-leetcode-solution-bccn/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

复杂度分析
时间复杂度:O(log∣x∣)。翻转的次数即 x 十进制的位数。
【【golang】leetcode初级-反转字符串&整数反转】空间复杂度:O(1)。

    推荐阅读