
LeetCode:整数反转(判断一个数是否超过Integer32位数的有效范围小技巧)
发布日期:2021-05-08 03:09:56
浏览次数:21
分类:精选文章
本文共 1577 字,大约阅读时间需要 5 分钟。
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
来源:力扣(LeetCode)
链接: 获取整数的反转,这一步相对简单,获取x这个数的最后一个数字n,然后进行sum = sum * 10 + n这一步代码,然后不断进行循环,从而得到x数字的反转。 这里最大的问题是如何判断反转后整数是否超过了32位有效数字的范围。通过官方题解,我们明白只要Integer.MIN_VALUE <= sum <= Integer.MAX_VALUE这个范围,那么sum就还没有超过32位有符号整数的范围,为什么是这样咧? 我们由上面整数反转中可以知道sum = sum * 10 + n,那么我们是否可以将Integer.MAX_VALUE也化成这样的形式咧?答案是当然可以了, Integer.MAX_VALUE = (Integer.MAX_VALUE / 10 ) * 10 + 7,所以这时候我们只要保证sum * 10 + n <= (Integer.MAX_VALUE / 10) * 10 + 7成立,那么就可以保证不会超过32位有效数字的范围了
。 通过化简,我们可以知道(sum - Integer.MAX_VALUE / 10) * 10 <= 7 - n即可,这时候,我们能分成3中情况. ①sum > Integer.MAX_VALUE/10,那么不等式必然不会成立 ②sum = Integer.MAX_VALUE/10,那么不等式必然成立 ③sum < Integer.MAX_VALUE/10,那么不等式必然成立 所以,我们可以得出结论,当sum <= Integer.MAX_VALUE / 10的时候,那么进行相加的时候整数必然不会超过32位有符号整数的范围.最小值也是这样分析的。 对应代码: class Solution { public int reverse(int x) { int sum = 0,n; boolean flag = x < 0 ? true : false;//flag表示x是否大于等于0 if(flag){ /* 如果x小于0,那么flag为true,这时候x取相反数,即x = -x,注意 不可以是x -= x,否则最后得到的就不是想要的结果,而是这一步之 后x变成0 */ x = -x; } while(x != 0){ n = x % 10; if(sum < Integer.MIN_VALUE / 10 || sum > Integer.MAX_VALUE / 10)// Integer.MIN_VALUE / 10 <= sum <= Integer.MAX_VALUE / 10时,sum没有超过32位有符号数字的范围 return 0; sum = sum * 10 + n; x /= 10; } if(flag) //如果x是负数,那么最后反转的数字也应该是一个负数,所以需要将sum变成他的相反数 sum = -sum; return sum; }}
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月11日 11时02分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
2021-05-09
【nodejs原理&源码杂记(8)】Timer模块与基于二叉堆的定时器
2021-05-09
如何查看jsplumb.js的API文档(YUIdoc的基本使用)
2021-05-09
大前端的自动化工厂(1)——Yeoman
2021-05-09
数据仓库建模方法论
2021-05-09
数据仓库之拉链表
2021-05-09
虚拟机搭建hadoop环境
2021-05-09
DataStax Bulk Loader教程(四)
2021-05-09
物联网、5G世界与大数据管理
2021-05-09
Cassandra与Kubernetes
2021-05-09
.NET应用框架架构设计实践 - 概述
2021-05-09
比Django官方实现更好的分页组件+Bootstrap整合
2021-05-09
Rust 内置 trait :PartialEq 和 Eq
2021-05-09
Hibernate(十四)抓取策略
2021-05-09
Mybatis入门之增删改查
2021-05-09
[菜鸟的设计模式之旅]观察者模式
2021-05-09
Spring-继承JdbcDaoSupport类后简化配置文件内容
2021-05-09
Java基础IO流(一)
2021-05-09