Difficulty: Easy

 More:【目录】LeetCode Java实现

Description

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

Intuition

这道题要注意几个情况:1.题目要求只能用int类型;2. 要考虑到负数的情况;3.考虑前后为0的情况,例如00100翻转后为1,而不是100;4. 考虑到翻转后的数字越界的情况,即要注意answer>Integer.MAX_VALUE或者answer<Integer.MIN_VALUE的情况。

Solution

解法一:(乘以10之前,绝对值与Integer.MAX_VALUE/10比较)

    public int reverse(int x) {int ans=0;while(x!=0){if(Math.abs(ans)>Integer.MAX_VALUE/10)return 0;ans=ans*10+x%10;x/=10;}return ans;}

  

解法二:(越界的情况下,ans/10的结果将会 和之前不一致)

    public int reverse(int x) {int ans=0;while(x!=0){int temp=ans*10+x%10;if(temp/10!=ans)return 0;ans=temp;x/=10;}return ans;}

  

What I've learned

  1. 利用ans=ans*10+x%10进行翻转。

  2. 本题思考时必须要注意到正负数的情况。利用ans=ans*10+x%10进行翻转时,则不用区分正负,因为负数%10的结果也还是负数。 

  3. 一定要注意溢出的情况,解法一在乘以10之前,用绝对值与Integer.MAX_VALUE/10比较;而解法二是根据溢出后的结果/10与之前不一致来判断。两种方法都要好好记住。

  4. 解法一中,为什么不用判断Math.abs(ans)==Integer.MAX_VALUE/10的情况?

    原因是,方法接收的参数x也为int类型,其最高位只能是1或者2,所以Integer.MAX_VALUE/10+1或者2都不会超出Integer.MAX_VALUE的范围。

  5. Integer.MAX_VALUE=0x7FFF FFFF=2^31-1=2147483647;Integer.MIN_VALUE=0x8000 0000=-2^31=-2147483648.

  6. 上面的边界值,最高位为2,最低位为7和8。一共10位数字。

 More:【目录】LeetCode Java实现

转载于:https://www.cnblogs.com/yongh/p/10152515.html

【LeetCode】7. Reverse Integer相关推荐

  1. 【Leetcode】[7]Reverse Integer 反转整数

    题目       给定一个 32 位有符号整数,将整数中的数字进行反转.注意:假设我们的环境只能存储32位有符号整数,其数值范围是[-231,231-1].根据这个假设,如果反转后的整数溢出,则返回0 ...

  2. 【leetcode】Roman to Integer

    题目描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range fr ...

  3. 【LeetCode】345. Reverse Vowels of a String 解题小结

    题目: Write a function that takes a string as input and reverse only the vowels of a string. Example 1 ...

  4. 【LeetCode】345. Reverse Vowels of a String 解题报告

    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51429823 Subject 出处:https://leetcode.com/prob ...

  5. 【leetcode】25. Reverse Nodes in k-Group 链表按K分段逆序

    1. 题目 Given a linked list, reverse the nodes of a linked list k at a time and return its modified li ...

  6. 【Leetcode】Palindrome Number

    Determine whether an integer is a palindrome. Do this without extra space. 思路:若使用[Leetcode]Reverse I ...

  7. 【LeetCode】动态规划入门(专项打卡21天合集)

    [LeetCode]动态规划入门(专项打卡21天合集) 下图为证 文章目录 [LeetCode]动态规划入门(专项打卡21天合集) Day1 斐波拉契数 第 N 个泰波那契数 Day2 爬楼梯 使用最 ...

  8. 【Leetcode】103. 二叉树的锯齿形层次遍历

    题目 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 ...

  9. 【LeetCode】字符串 string(共112题)

    [3]Longest Substring Without Repeating Characters (2019年1月22日,复习) [5]Longest Palindromic Substring ( ...

最新文章

  1. 将毫秒转换_Matlab将Unix时间戳转为可读日期
  2. Spring Boot Spring MVC 异常处理的N种方法
  3. feign调用第三方接口_讲一个你不知道的事:SringCloud的feign的继承特性
  4. 【Python入门】Python之shutil模块11个常用函数详解
  5. 验证java 递增不是原子操作
  6. UIView编程体验(一)
  7. 单片机c语言 外部中断,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
  8. Fragment与Activity之间的相互通信
  9. 第十五章:交互式界面(十一)
  10. Oracle 根据身份证计算年龄 性别 生日
  11. ios禁止屏幕旋转的几种方法
  12. Bmob后端云初体验
  13. 其实macbook装win7很简单
  14. 减小PDF文档大小(转载)
  15. nsfw什么颜色_“ NSFW”是什么意思,以及如何使用它?
  16. http协议详解+https
  17. Bps,bps,pps 等的计算
  18. 星座高考成绩查询2021,2021年能金榜题名的星座,2021年学业运势旺盛的星座
  19. 盒子模型——margin
  20. mysql闰秒_闰秒导致MySQL服务器的CPU sys过高

热门文章

  1. Visual Studio Code 11 月 Python 扩展更新
  2. 微软发布首版基于 Chromium 79 的 Edge 浏览器
  3. odoo10参考系列--视图二(表单视图)
  4. 一招判断三元催化堵塞_汽车的氧传感器和三元催化器故障如何判断呢?用这些方法判断...
  5. php xingnengfenxi_PHP 性能分析第三篇: 性能调优实战
  6. python正则化_Python正则表达式
  7. 逐步回归 图像降维matlab,使用matlab对训练样本图像降维,并对测试图像使用变换矩阵降维并重构...
  8. typora绑定github博客_零基础搭建个人博客
  9. php phpredis,PHP_PHP中redis的用法深入解析,redis是一个key-value存储系统。 - phpStudy...
  10. java count 在哪一类里_count 是java关键字吗