LeetCode 第七题,整数反转:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
解题:
- 暴力解决方式,涉及到
array.reverse
、array.indexOf
等方法的使用,时间复杂度 >O(n2)
- 另一种方式,创建一个新变量,利用输入变量除10取余数方式,逐一赋值。时间复杂度
O(logn)
- JavaScript
function reverse(x) {
let y = 0;
while(x !== 0) {
y = y * 10 + x % 10;
x = ~~(x / 10);
}
return y > 2 ** 31 -1 || y < -(2 ** 31) ? 0 : y
}
- Go
package reverse
import "math"
func reverse(x int) int {
y := 0
for x != 0 {
y = y * 10 + x % 10
if x > 0 {
// 数据类型转化
x = int(math.Floor(float64(x)/10))
} else {
x = int(math.Ceil(float64(x)/10))
}
}
if y > int(math.Pow(2, 31) - 1) || y < int(-math.Pow(2, 31)) {
return 0
}
return y
}