小白刷题——整数反转

JAVA小白自学中

整数反转

题目

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2……31, 2……31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

标题示例

示例 1:

输入: 123
输出: 321
示例 2:

输入: -123
输出: -321
示例 3:

输入: 120
输出: 21

代码

class Solution {
    public int reverse(int x) {
        long a, b, c, d;
        b = 0;
        c = 1;
        d = 2147483648L;
        if (x == -2147483648) {
            return 0;
        }
        if (x < 0) {
            x = -x;
            c = -1;
        }
        for (long i = x; i != 0; i = i / 10) {
            a = i % 10;
            if (i < 10) {
                b = b + a;
            } else {
                b = (a + b) * 10;
            }

            if (b > d) {
                b = 0;
                break;
            }
        }
        d = b * c;
        int fh = (int) d;
        return fh;
    }
}

解题思路

数值范围为 [-2147483648, 2147483647],超出输出0
a:对10取余,储蓄本轮数据;
b:保存上一轮数据;
c:保存符号
d:保存int最大值,与最后保留整体值
i:循环判断保存X的值并判断X与除10(步进)
fh:做为最终返回值,保存d强制转换为int的值
输出异常,当x值为-2147483648时
不知道为什么会输出47
最终选择将x先做判断
若x值为-2147483648
则直接返回0

声明

以上内容为本人对此题的处理方法
若有侵权,请在下方回复中举证并@本人删除文章
本人小白一枚,自学的JAVA
愿大家都能找到比我更加优秀的方法
若有知道为什么会输出异常的大佬
也请@我讲解一下,提前谢谢大佬了

在此鸣谢

leetcode平台与CSDN平台的支持
还有各位的捧场

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值