整数反转
//给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
//
// 如果反转后整数超过 32 位的有符号整数的范围 [−2³¹, 231 − 1] ,就返回 0。
//假设环境不允许存储 64 位整数(有符号或无符号)。
//
//
//
// 示例 1:
//
//
//输入:x = 123
//输出:321
//
//
// 示例 2:
//
//
//输入:x = -123
//输出:-321
//
//
// 示例 3:
//
//
//输入:x = 120
//输出:21
//
//
// 示例 4:
//
//
//输入:x = 0
//输出:0
//
//
//
//
// 提示:
//
//
// -2³¹ <= x <= 2³¹ - 1
//
//
// Related Topics 数学 👍 3948 👎 0
//leetcode submit region begin(Prohibit modification and deletion)
简单说一下思路,数字的反转,简单的方式就是取余,然后不断取出最后一位数字,然后将数字*10拼起来,就是最后的结果
这里涉及到可能会溢出的问题,所以要在溢出的前一位就就进行判断,那么就是 max/10 和min/10,如果当前的数字已经大于max/10 和min/10了,那么接下来肯定会溢出。
class Solution {
public int reverse(int x) {
Integer max = Integer.MAX_VALUE;
int res = 0;
while (x != 0){
if(res > max/10){
return 0;
}
if(res < -max/10){
return 0;
}
res = res * 10 + x%10;
x = x/10;
}
return res;
}
}
//leetcode submit region end(Prohibit modification and deletion)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 无知的小狼!
评论