问题描述:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnx13t/
来源:力扣(LeetCode)
解法思想:
例如123 => 321 ,即3*100 + 2*10 + 1*1 = (3*10+2)*10 +1*1
由此我们可以得出规律,原数 (最低位*10+高一位)*10+再高一位...+最高位 = 翻转后结果
代码(js,其他语言同理):
var reverse = function(x) {
let preRev = 0 //初始化这个乘数,即假设最低位的上一位乘加结果为0
while(x != 0){ //结束条件:最高位计算完毕
preRev = preRev * 10 + x % 10
x = parseInt(x / 10)
}
if(preRev >= Math.pow(2,31) - 1 || preRev <= -Math.pow(2,31)) return 0
return preRev
}