尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

反转数字-处理溢出的条件-Java

反转数字-处理溢出的条件-Java
📅 发布时间:2026/6/18 22:58:40
反转数字-处理溢出的条件-Java

题目:反转数字

描述
给定一个32位的有符号整数num,将num中的数字部分反转,最后返回反转的结果。
1.只反转数字部分,符号位部分不反转。
2.反转后整数num超过 32 位的有符号整数的范围$[-2^{31} ,2^{31}-1] $ ,返回 0。
3.假设本题不允许存储 64 位整数(有符号或无符号,即C++不能使用long long ,Java不能使用long等)。
数据范围:
$ -2^{31} <= x <= 2^{31}-1 $

错误处理溢出代码

 if(x>=(2<<32-1)) return 0;if(x<=-(2<<32)) return 0;//int类型根本无法表示。。。神

正确处理溢出代码

if (res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && digit > 7)) {return 0;}
if (res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && digit < -8)) {return 0;}

原理

在执行可能导致溢出的操作前,用反向运算判断是否会溢出,避免直接计算溢出值。以 res = res * k + digit 为例(k 是倍数,如 10、3 等),步骤如下:
确定目标范围:比如 int 的范围是 [min, max](min = -2147483648,max = 2147483647)。
拆分操作:要执行 res * k + digit,先判断 res * k 是否会溢出,再判断加 digit 后是否溢出。
反向判断:
若 k > 0:

  • 正数溢出:res > max / k → 此时 res * k 必超 max;
    若 res == max / k,则需额外判断 digit > max % k(超出余数则溢出)。
  • 负数溢出:res < min / k → 此时 res * k 必小于 min;
    若 res == min / k,则需额外判断 digit < min % k(超出余数则溢出)。

坑

  Math.abs(Integer.MIN_VALUE);

输出仍为Integer.MIN_VALUE。

完整代码

public int reverse(int x) {int res = 0;while (x != 0) {int digit = x % 10;x = x / 10;if (res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && digit > 7)) {return 0;}if (res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && digit < -8)) {return 0;}res = res * 10 + digit;}return res;
}

错误代码

public int reverse (int x) {boolean sign=false;if(x>=(2<<32-1)) return 0;if(x<=-(2<<32)) return 0;//int类型根本无法表示。。。神if(x>=0) sign=true;if(!sign) x=Math.abs(x);//Math.abs有坑int res=0;while(x>0){res=res*10+x%10;//具有溢出的风险 res每次都扩大10倍并且加上一个0-9的数x=x/10;}return sign?res:-res;//有关符号判断根本不用判断,修改while条件为!=10。//用除法和取余的反向运算,在实际计算前拦截溢出,这是处理整数溢出的标准解法。}

相关新闻

  • Storm-0501威胁组织利用云技术实施勒索攻击的技术分析
  • US$289 VVDI2 AUDI and 5th IMMO Functions Authorization Service
  • OpenLayers地图交互 -- 章节十三:拖拽旋转交互详解 - 实践

最新新闻

  • 面试被问“你的缺点是什么”,90%的应届生都答错了!(附满分话术)
  • Spring Cloud Alibaba 最佳实践:基于 Spring Boot 4.0 的完整微服务示例项目
  • 三步掌握AI斗地主:如何用DouZero智能助手提升你的游戏胜率
  • 2026山东大学项目实训个人博客(六)
  • DC/DC电源设计实战:从MIC261201选型到PCB布局与热管理全解析
  • 2026济南婚纱摄影选型全指南:行业标准、品牌梯队与合规避坑全解析 - 速递信息

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号