java integer reverse_Leetcode7 Reverse Integer Java实现及分析
首先
public int reverse(intx) {
int ans = 0;
while(x!=0) {
int temp = x%10;
x/=10;
ans = ans*10+temp;
}
returnans;
}
但是这样无法检验最终结果是否溢出。
我们可以看到,溢出的原因是ans*10+temp>MAX或ans*10+temp
对于正数,举个小点的例子,一个6bit的整数,范围在[-32,31],ans>3(31/10)的话,最小ans=4,乘10必然溢出,对应情况1。若ans<3,最大ans=2,乘10+9=29都不会溢出,对应不溢出情况。若ans=3,则分情况考虑,若temp>1,则溢出,temp<=1,则不会溢出,对应情况2。(真是个数学问题啊……要严格推导的话还要考虑向下取整,真的麻烦……)
于是对于正数,有:
1.ans>MAX/10时,ans*10+temp确定会溢出;
2.ans==MAX/10且temp>7时,ans*10+temp确定会溢出。
负数同理。
为什么是7呢。因为2^1=2,2^2=4,2^3=8,2^4=16;2^5=32,2^6=64,2^7=128,2^8=256……可以发现,4个一循环,分别个位是2,4,8,6。2^31对应的是8,则2^31-1个位是7。
故有:
public int reverse(intx) {
int ans = 0;
while(x!=0) {
int temp = x%10;
x/=10;
if(ans>Integer.MAX_VALUE/10||(ans==Integer.MAX_VALUE/10&&temp>7)) return 0;
if(ans
ans = ans*10+temp;
}
returnans;
}
java integer reverse_Leetcode7 Reverse Integer Java实现及分析相关推荐
- LeetCode 7 Reverse Integer(反转数字)
题目来源:https://leetcode.com/problems/reverse-integer/ Reverse digits of an integer. Example1: x = 123, ...
- Java里面reverse_Java Java lang.Long.reverse()用法及代码示例
java.lang.Long.reverse()是Java中的内置函数,该函数返回通过反转指定long值的二进制补码二进制表示形式中的位顺序而获得的值. 用法: public static long ...
- java reverse_Java Integer类reverse()方法与示例
java reverse 整数类reverse()方法 (Integer class reverse() method) reverse() method is available in java.l ...
- JAVA怎么将整数反转_【leetcode刷题】[简单]7.反转整数(reverse integer)-java
反转整数 reverse integer 题目 给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 ...
- java中的int、Integer 和 new Integer()的区分和比较
java中的int.Integer 和 new Integer()的区分和比较 一.问题提出: 1.1.问题一: int a = 2; Integer b = 2; Integer c = new I ...
- java中String,int,Integer,char、double类型转换
java中String,int,Integer,char.double类型转换----https://www.cnblogs.com/kangyu222/p/5866025.html 转载于:http ...
- Java中的AutoBoxing (Integer对-128~127之间数值的特殊处理)
理解Java中Integer和int的Autoboxing,有助于java新手理解java内存机制. 在Java中的,Integer和int是可以Autoboxing和boxing的,这里要注 ...
- 在Java中将Double转换为Integer
本文翻译自:Cast Double to Integer in Java Any way to cast java.lang.Double to java.lang.Integer ? 有什么方法可以 ...
- Java学习_int和Integer的区别+包装类
1.Java 中的数据类型分为基本数据类型和引用数据类型 int是基本数据类型,Integer是引用数据类型: Ingeter是int的包装类,int的初值为0,Ingeter的初值为null. 2. ...
最新文章
- ajax回调函数ifelse,实现AJAX及用Promise解决回调函数命名问题
- linux指令与数据库,Linux指令每日背诵(第一天)
- 二十三、中断(控制计算机硬件,避免使用0000:0000-0000:03FF内存地址)
- Objects.equals 有坑!!!
- 酒泉于洋计算机学校,于洋
- jpa 表注释和字段注释_JPA注释–Hibernate注释
- oracle的db的容量计算公式,Oracle如何精确计算row的大小
- 190228每日一句
- 内存管理的概念及作用
- Ipopt安装【Ubuntu18.04】XAVIER(ARM架构)
- html怎么改表格背景,javascript修改表格背景色实例代码分享
- 微信jsapi支付流程
- 计算机应用基础评分标准及评分细则,《计算机应用基础》评分标准
- 服务器国产linux操作系统,国产linux操作系统适于做服务器系统的有哪些
- Bootstrap4动态切换主题
- keras使用VGG19网络模型实现风格迁移
- B2G商城APP解决方案开发
- mysql binlog笔记
- 如何检测、清理Greenplum膨胀、垃圾
- SQLServer 统计数据量
热门文章
- 精通ASP.NET MVC ——辅助器方法
- 移动端实现文字轮播_移动端轮播图实现
- app canvas渲染后图片黑色_H5 基于 canvas 实现电子签名并生成PDF文档
- oracle+行换列,Oracle的数据表中行转列与列转行的操作实例讲解
- 小米登录协议分析_联想前副总裁常程跳槽小米数月后,波澜再起
- android 将图片路径转二进制,将图像转换为二进制图像中的android
- 建立a8 linux开发环境,Fedora 14下建立 omap3530 开发环境 - 交叉编译器
- 技术员联盟win11旗舰版64位镜像v2021.07
- RTSP播放器或RTMP播放器常用的事件回调设计
- vue全局安装jquery,vue使用bootstrap框架,vue中封装websocket通讯,vue引入element-ui 组件库,引入highcharts图表插件