力扣(LeetCode)整数反转 个人题解
2024-09-01 16:51:37
给出一个 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;
}
}
最新文章
- web一周
- js运动框架tween
- velocity模板使用建议
- Storm系列之一——Storm Topology并发
- linux下文件系统类型的学习
- 由“大数据量Excel入库高效方式”瞥见“并联系统”之优势
- 菜单设计器(Menu Designer)及其B/S,C/S双重实现(B/S开源)
- mysql基本内容学习过程
- advanced dom scripting dynamic web design techniques Chapter 2 CREATING YOUR OWN REUSABLE OBJECTS
- 【机器学习实验】学习Python来分类现实世界的数据
- 【读书札记】建立第一个Web项目
- 代码创建xml文档并写入指定节点
- Scrapy爬虫大战京东商城
- tcpdum使用详解
- centos7安装ceph-luminous(1 mon+2 osd)
- java中Set的用法
- mfc 中的error RC2104 : undefined keyword or key name
- 3.10 C++虚基类 虚继承
- Linux系统Apache服务 - 配置HTTP的默认主页
- Linux基础和网络管理上机试题 - imsoft.cnblogs
热门文章
- TensorFlow2.0(8):误差计算——损失函数总结
- 这可能就是你苦苦寻找免费、高颜值、功能强大的 Markdown 编辑器(共5款)
- epoll--IO多路复用
- 《Java并发编程实战》读书笔记-第5章 基础构建模块
- RIDE的External Resources
- [案例分析] 政务云市场面临的复杂格局——重庆政务云模式的启示:多厂商竞争化、PaaS 化
- 刷14道leetcode的总结
- abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理六(二十四)
- jQuery的原生替代
- day06整理