【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)。
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长