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

news/2025/9/28 12:35:28/文章来源:https://www.cnblogs.com/xqqlyx/p/19116427
反转数字-处理溢出的条件-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。//用除法和取余的反向运算,在实际计算前拦截溢出,这是处理整数溢出的标准解法。}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

废品回收小程序:从 “扔垃圾“ 到 “变资源“ 的体验革命 - 详解

废品回收小程序:从 “扔垃圾“ 到 “变资源“ 的体验革命 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

做网站的会什么wordpress调用主站的文章

1、点击主页面右上角的三条横杠 腾讯视频如何设置关闭本地视频后自动打开主界面 2、点击【设置】 腾讯视频如何设置关闭本地视频后自动打开主界面 3、点击左侧的【高级设置】 腾讯视频如何设置关闭本地视频后自动打开主界面 4、勾选【关闭本地视频后自动打开主界面】 腾…

怎么做自己公司的网站如何用手机免费创建网站

12 月 3 日&#xff0c;2023 IoTDB 用户大会在北京成功举行&#xff0c;收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题&#xff0c;多位学术泰斗、企业代表、开发者&#xff0c;深度分享了工业物联网时序数据库 IoTDB 的技术创新…

网站开发可行性报告货运app开发公司

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 简介&#xff1a; 对比大多数开发者来说&#xff0c;杨飞的职业路线可以说是大相径庭。从大厂到创业公司&#xff0c;从一线城…

用flash做的网站网站开发相关技术

热门API接口大全分享&#xff0c;含天气、物流等。。。 天气预报查询&#xff1a;查询全国以及全球多个城市的天气&#xff0c;包含15天天气预报查询。天气预警&#xff1a;可以获取指定城市当前生效中的各类天气预警&#xff0c;如寒潮蓝色预警信号&#xff0c;或一次性拉取全…

详细介绍:C++基础(22)——模板的进阶

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

一个问题记录-服务器那边所以得请求进去,去操作数据库的时候,全部都拿不到数据库链接com.alibaba.druid.pool.GetConnectionTimeoutException

一个问题记录-服务器那边所以得请求进去,去操作数据库的时候,全部都拿不到数据库链接com.alibaba.druid.pool.GetConnectionTimeoutException1 问题愉快的星期六,需要接到电话,说系统崩了一看日志,发现所以请求全…

稍微人格解离一点也无所谓,别太过就行

正文今天聊个有点危险的话题:“人格解离”。先声明,我说的不是临床上那种需要看医生的病理性人格解离障碍(DID)。我说的是一种主动的、可控的、作为心理防御机制的 “轻度人格解离”。轻度的人格解离,是一种非常实…

快速构建高性能 web 应用!了解 Gin Web 框架 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

淘宝客做连接网站网站前端静态模板下载

关于APP开发目前已经过了火热的阶段&#xff0c;现在学习APP开发的人越来越多&#xff0c;但在实际的业务场景中&#xff0c;APP开发还是有一部分的市场需求。 所以&#xff0c;这里简单记录一下APP开发的几种思路和方案。 APP平台 首先&#xff0c;目前APP开发主要有两大平…

移动网站功能峰峰信息港免费发布平台

播放器有个功能&#xff0c;当用户打开视频时&#xff0c;需要读取媒体文件的总时长等信息&#xff0c;不巧的时&#xff0c;获取FLV时总失败&#xff0c;下面来具体分析下FLV和MP4获取总时长的原因和区别&#xff1a; 播放器有个获取MediaInfo的接口&#xff0c;功能如下&am…

题解:[GESP202509 五级] T1

题目传送门 目前还不知道,题目还未加入洛谷题库 题目概述 T1: 给定一个数 \(n(n \le 10^5)\),你需要选出若干个在1到 \(n\) 范围内的数,使其中任意两个数互质(即两数最大公因数为1),问最多你能选几个数? 解题思…

US$39.9 Scorpio-LK Emulators SLK-06 for Tango Key Programmer

Scorpio-LK Emulators SLK-06 for Tango Key Programmer including AuthorizationSLK-06 is battery powered. Note that a battery is not included with an emulator and has to be obtained locally. Three standar…

公司做网站一般网站建设哪儿好

preareRefresh&#xff1a;刷新前的工作准备 obtainFreshBeanFactory&#xff1a;获取子类刷新后的内部beanFactory实列 prepareBeanFactory&#xff1a;为容器注册必要的系统级别bean postProcessBeanFactory&#xff1a;允许容器的子类注册postProcessor invokeBeanFacto…

OI 模板合集

输入输出优化 int 快读 int read() {int xr=0,F=1; char cr;while(cr=getchar(),cr<0||cr>9) if(cr==-) F=-1;while(cr>=0&&cr<=9)xr=(xr<<3)+(xr<<1)+(cr^48),cr=getchar();return x…

2025无人机在低空应急救援中的应用实践

2025年7月,深圳大鹏新区一名登山者跌落悬崖重伤。传统救援需数小时,但一架搭载医疗设备的无人机仅用78分钟完成伤者转运,生命体征全程平稳。这场"低空生命接力"背后,是2025年无人机在应急救援领域的全面…

本地做那种网站好一些大连网站建设 领超最好

一、简述 我们在日常处理文件时&#xff0c;经常用到os模块&#xff0c;但是有的时候你会发现&#xff0c;像拷贝、删除、打包、压缩等文件操作&#xff0c;在os模块中没有对应的函数去操作&#xff0c;下面我们就来讲讲高级的 文件、文件夹、压缩包 处理模块&#xff1a;shuti…

完整教程:默会之墙:机器人教学困境中的认知迷雾与破晓之光

完整教程:默会之墙:机器人教学困境中的认知迷雾与破晓之光2025-09-28 12:08 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importa…

网站制作主要公司常德微网站开发

1. Activiti 5.x 提供的 activiti-explorer 账号 kermit 密码 kermit explorer 相当于 admin app。 2. Activiti 6.x 提供的 activiti-admin 账号 admin 密码 admin 修改端口&#xff0c;8080 或者 9999&#xff0c;依据自己 tomcat 的部署情况。 admin-port admin-port 可以…

实用指南:【分布式】分布式事务方案:两阶段、TCC、SEATA

实用指南:【分布式】分布式事务方案:两阶段、TCC、SEATApre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…