第一题 反转字符串
题目信息
编写一个函数,其作用是将输出的字符串反转过去。输出字符串以字符数组 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 十进制的位数。
空间复杂度:O(1)。