给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

官方题解的思路是逐位取出,判断是否满足溢出的条件,并列举了可能出现的俩种情况,遇到直接返回0 。总得来说还是考察对数字的敏感。

代码如下:

class Solution {
public int reverse(int x) {
int ans=0;
while(x!=0)
{
int tmp=x%10;
x/=10;
if (ans > Integer.MAX_VALUE/10 || (ans == Integer.MAX_VALUE / 10 && tmp > 7))
return 0;
if (ans < Integer.MIN_VALUE/10 || (ans == Integer.MIN_VALUE / 10 && tmp < -8))
return 0;
ans=ans*10+tmp;
}
return ans;
}
}

个人的思路是将满足10位数的数字逐位比较MAX_VALUE或者MIN_VALUE对应位置,如果不满足直接返回0 。但是这里负数的没写好,所以就不放出来了。

看了大佬的操作,大佬直接判断反转后的数字再反转回去是否和原来对应,如果不对应,说明出现了溢出,返回0,如果对应,说明没溢出是正常的,继续操作。可以说是非常神仙的做法了。

代码如下:

class Solution {
//反转后再反转看是否溢出
public int reverse(int x) {
int res = 0;
while (x != 0){
int tail = x % 10;
int tmp = res * 10 + tail;
if((tmp - tail) / 10 != res)return 0;
res = tmp;
x = x / 10;
}
return res;
}
}

最新文章

  1. web一周
  2. js运动框架tween
  3. velocity模板使用建议
  4. Storm系列之一——Storm Topology并发
  5. linux下文件系统类型的学习
  6. 由“大数据量Excel入库高效方式”瞥见“并联系统”之优势
  7. 菜单设计器(Menu Designer)及其B/S,C/S双重实现(B/S开源)
  8. mysql基本内容学习过程
  9. advanced dom scripting dynamic web design techniques Chapter 2 CREATING YOUR OWN REUSABLE OBJECTS
  10. 【机器学习实验】学习Python来分类现实世界的数据
  11. 【读书札记】建立第一个Web项目
  12. 代码创建xml文档并写入指定节点
  13. Scrapy爬虫大战京东商城
  14. tcpdum使用详解
  15. centos7安装ceph-luminous(1 mon+2 osd)
  16. java中Set的用法
  17. mfc 中的error RC2104 : undefined keyword or key name
  18. 3.10 C++虚基类 虚继承
  19. Linux系统Apache服务 - 配置HTTP的默认主页
  20. Linux基础和网络管理上机试题 - imsoft.cnblogs

热门文章

  1. TensorFlow2.0(8):误差计算——损失函数总结
  2. 这可能就是你苦苦寻找免费、高颜值、功能强大的 Markdown 编辑器(共5款)
  3. epoll--IO多路复用
  4. 《Java并发编程实战》读书笔记-第5章 基础构建模块
  5. RIDE的External Resources
  6. [案例分析] 政务云市场面临的复杂格局——重庆政务云模式的启示:多厂商竞争化、PaaS 化
  7. 刷14道leetcode的总结
  8. abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理六(二十四)
  9. jQuery的原生替代
  10. day06整理