给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
输入: 123
输出: 321
输入: -123
输出: -321
输入: 120
输出: 21
y = y * 10 + x % 10 x /= 10
二者使用效果极佳
- 这个题很多方法的,就用数学公式解答吧
- 你可以举个例子,假如123,怎么才能成为321呢?字符串的话,反转即可,关键这不是字符串了,当然你想说,先转成字符串,然后字符串反转,然后变为int,岂不是很方便?嘿嘿,的确很方便。
- 利用y = y * 10 + x % 10,123 % 10 = 3,是不是将3提炼出来了?那么利用x /= 10,是不是x=12了? y = 3, 假如为再来一次这样的操作呢?12 % 10 = 2, x = 1, y = 30 + 2,不用继续往下说了吧?
let reverse = function(x) {
let ret = 0;
while (x !== 0) {
ret = ret * 10 + x % 10;
x = (x / 10) | 0; // x / 10 去除末位,| 0 强制转换为32位有符号整数。
// 通过 | 0 取整,无论正负,只移除小数点部分(正数向下取整,负数向上取整)。
}
return (ret | 0) === ret ? ret : 0; // ret | 0 超过32位的整数转换结果不等于自身,可用作溢出判断。
};
console.log(reverse(123));
func reverse(x int) int {
ret := 0
for x != 0 {
ret = ret * 10 + x % 10
x /= 10
}
return ret
}
class Solution {
public int reverse(int x) {
long ret = 0;
while (x != 0) {
ret = ret * 10 + x % 10;
x /= 10;
}
return (int) ret == ret ? (int) ret : 0;
}
}