博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode:7. 整数反转
阅读量:6006 次
发布时间:2019-06-20

本文共 988 字,大约阅读时间需要 3 分钟。

题目描述:

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

示例:

输入: 123输出: 321
输入: -123输出: -321
输入: 120输出: 21

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

 

思路分析:

这道题是easy,实际上思路是比较简单的,首先用一个数组逆向的存储整数各位,再遍历一次数组,重新构建一遍即可。但是由于这个整数溢出问题,我也磕磕绊绊提交了多次,主要还是自己基础不够扎实。这里需要注意的是如何对于整数溢出进行判断,参考了一个博客的相关内容:

 

另外也有一些题解采用了更加简洁的方法,没有用我这种这么直接的方式去判断溢出,算是比较巧妙的。可以参考博客:

 

代码:

1 class Solution { 2 public: 3     int reverse(int x) { 4         if(x>INT_MAX || x
num; 7 while(x!=0) 8 { 9 int tmp = x%10;10 num.push_back(tmp);11 x = x/10;12 }13 int res = 0;14 int base = 1;15 for(int i=num.size()-1; i>=0; i--)16 {17 18 if(num[i] > INT_MAX/base || num[i] < INT_MIN/base)19 return 0;20 if(num[i]<0)21 {22 if(base*num[i] < INT_MIN - res)23 return 0;24 }25 else if(num[i]>0)26 {27 if(base*num[i] > INT_MAX - res)28 return 0;29 }30 res += num[i]*base;31 if(i>0)32 {33 if(base >= INT_MAX/10)34 return 0;35 else36 base *= 10;37 }38 }39 return res;40 }41 };

 

转载于:https://www.cnblogs.com/LJ-LJ/p/11107817.html

你可能感兴趣的文章
【Interface&navigation】添加并处理操作(46)
查看>>
Mysql设置自增长主键的初始值
查看>>
Android计时器正确应用方式解析
查看>>
手机视频会议的实现
查看>>
性能及监控
查看>>
linux系统CPU、内存、硬盘、网络、lnmp服务整体监控邮件报警
查看>>
我的友情链接
查看>>
猴子吃桃问题
查看>>
个人总结问卷调查,头脑风暴,焦点小组的区别
查看>>
Ubuntu系统(十一)-MySql数据库安装与配置
查看>>
帝国网站系统目录说明
查看>>
为虚拟机提供FT
查看>>
Ubuntu12.04以及centos jdk7 32位安装 和设置tomcat监听内网地址
查看>>
使用命令修改注册表键值及权限
查看>>
Linux添加用户user到用户组group
查看>>
QQ聊天摘录 Odoo--Buy/Manufacture/Make To Order三个概念
查看>>
(转载)函数入栈顺序
查看>>
3.8-ansible playbook循环
查看>>
Nginx-rtmp模块实现流媒体play、push、pull功能
查看>>
关于STP根桥选择过程的思考
查看>>