avatar

整数反转

//给你一个 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)

文章作者: 无知的小狼
文章链接: https://bytedance.press/2023/12/28/20240102/%E6%95%B4%E6%95%B0%E5%8F%8D%E8%BD%AC/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 无知的小狼

评论