Integer Reverse - LeetCode

 

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
}

Guess you like

Origin blog.csdn.net/m0_37707561/article/details/128416773