整数反转——LeetCode

 

1. 字符串反转:

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.通过%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
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值