1. String reverse:
import kotlin.math.abs
import kotlin.math.pow
class Solution {
//自己写的字符串转换,注意 最小负数在Int范围内没有绝对值
fun reverse(x: Int): Int {
val isNegative = x < 0
// 如果不x.toLong的话,注意-2147483648这个数,写成2进制就是 1 后面31个0,Int类型表示不了-2147483648的绝对值2147483648,这是计算机机制决定的
val number = abs(x.toLong()).toString().reversed().toLong()
val base = 2.0
val index = 31.0
val limit = base.pow(index).toLong()
return if (isNegative) {
if (-number < -limit) 0 else -(number.toInt())
} else {
if (number > limit - 1) 0 else number.toInt()
}
}
}
2. Get the last digit by %10
//通过 %10 不断的取最后的个位,然后 /10 去掉刚取的个位,直到x为0
fun reverse(x: Int): Int {
var mX = x;
var rev = 0
while (mX != 0) {
if (rev < Int.MIN_VALUE / 10 || rev > Int.MAX_VALUE / 10) { // 注意这里是和 Int的最大最小值 / 10 比较,因为逻辑顺序原因
return 0
}
val digt = mX % 10
mX /= 10
rev = rev * 10 + digt
}
return rev
}