首先

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实现及分析相关推荐

  1. LeetCode 7 Reverse Integer(反转数字)

    题目来源:https://leetcode.com/problems/reverse-integer/ Reverse digits of an integer. Example1: x = 123, ...

  2. Java里面reverse_Java Java lang.Long.reverse()用法及代码示例

    java.lang.Long.reverse()是Java中的内置函数,该函数返回通过反转指定long值的二进制补码二进制表示形式中的位顺序而获得的值. 用法: public static long ...

  3. java reverse_Java Integer类reverse()方法与示例

    java reverse 整数类reverse()方法 (Integer class reverse() method) reverse() method is available in java.l ...

  4. JAVA怎么将整数反转_【leetcode刷题】[简单]7.反转整数(reverse integer)-java

    反转整数 reverse integer 题目 给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 ...

  5. java中的int、Integer 和 new Integer()的区分和比较

    java中的int.Integer 和 new Integer()的区分和比较 一.问题提出: 1.1.问题一: int a = 2; Integer b = 2; Integer c = new I ...

  6. java中String,int,Integer,char、double类型转换

    java中String,int,Integer,char.double类型转换----https://www.cnblogs.com/kangyu222/p/5866025.html 转载于:http ...

  7. Java中的AutoBoxing (Integer对-128~127之间数值的特殊处理)

      理解Java中Integer和int的Autoboxing,有助于java新手理解java内存机制.   在Java中的,Integer和int是可以Autoboxing和boxing的,这里要注 ...

  8. 在Java中将Double转换为Integer

    本文翻译自:Cast Double to Integer in Java Any way to cast java.lang.Double to java.lang.Integer ? 有什么方法可以 ...

  9. Java学习_int和Integer的区别+包装类

    1.Java 中的数据类型分为基本数据类型和引用数据类型 int是基本数据类型,Integer是引用数据类型: Ingeter是int的包装类,int的初值为0,Ingeter的初值为null. 2. ...

最新文章

  1. ajax回调函数ifelse,实现AJAX及用Promise解决回调函数命名问题
  2. linux指令与数据库,Linux指令每日背诵(第一天)
  3. 二十三、中断(控制计算机硬件,避免使用0000:0000-0000:03FF内存地址)
  4. Objects.equals 有坑!!!
  5. 酒泉于洋计算机学校,于洋
  6. jpa 表注释和字段注释_JPA注释–Hibernate注释
  7. oracle的db的容量计算公式,Oracle如何精确计算row的大小
  8. 190228每日一句
  9. 内存管理的概念及作用
  10. Ipopt安装【Ubuntu18.04】XAVIER(ARM架构)
  11. html怎么改表格背景,javascript修改表格背景色实例代码分享
  12. 微信jsapi支付流程
  13. 计算机应用基础评分标准及评分细则,《计算机应用基础》评分标准
  14. 服务器国产linux操作系统,国产linux操作系统适于做服务器系统的有哪些
  15. Bootstrap4动态切换主题
  16. keras使用VGG19网络模型实现风格迁移
  17. B2G商城APP解决方案开发
  18. mysql binlog笔记
  19. 如何检测、清理Greenplum膨胀、垃圾
  20. SQLServer 统计数据量

热门文章

  1. 精通ASP.NET MVC ——辅助器方法
  2. 移动端实现文字轮播_移动端轮播图实现
  3. app canvas渲染后图片黑色_H5 基于 canvas 实现电子签名并生成PDF文档
  4. oracle+行换列,Oracle的数据表中行转列与列转行的操作实例讲解
  5. 小米登录协议分析_联想前副总裁常程跳槽小米数月后,波澜再起
  6. android 将图片路径转二进制,将图像转换为二进制图像中的android
  7. 建立a8 linux开发环境,Fedora 14下建立 omap3530 开发环境 - 交叉编译器
  8. 技术员联盟win11旗舰版64位镜像v2021.07
  9. RTSP播放器或RTMP播放器常用的事件回调设计
  10. vue全局安装jquery,vue使用bootstrap框架,vue中封装websocket通讯,vue引入element-ui 组件库,引入highcharts图表插件