LeetCode No.7 Reverse Integer
来源:互联网 发布:touch.js使用方法 编辑:程序博客网 时间:2024/06/06 01:28
这是一道很有意思的题,它将教会我们如何拆分一个整数的各个数位,题目是这样的:
将一个整数中的数字顺序反转,例如:
x = 123,return 321;
x = -123,return -321;
那么如何对一个数字反转呢,你可能会想到将数字转化为字符串,然后翻转字符串,再将字符串转换回数字;这样做可行,但是太麻烦,我们说整数是可以直接反转的,只要我们将它的每一位拆出来就可以了,那么如何将一个整数的各个位拆分出来呢?
可以借助整数除法操作(/)和取模操作(%),下面拿123举例:
123 / 10 = 12, 123 % 10 = 3;
12 / 10 = 1, 12 % 10 = 2;
1 / 10 = 0, 1 % 10 = 1;
由此可见,对一个整数依次对10取模即可将每一位的数字拆分出来;然后只需要这样合并:(3 * 10 + 2) * 10 + 1 = 321;
很简单吧,不过要注意啦,越简单的问题越需要注意,这题就有一些细节,题中所给的整数是一个32位的带符号整数,那么它能表示的最大范围是-2147483648~2147483647,显然我们在反转一个数的时候有可能会越界,那么如何处理越界问题就变得很重要;
当发生越界的时候,程序并不会终止,而是转回下界开始,用一个范围内的数字表示,那么我们就不能与INT_MAX进行比较来确定是否越界,先来看一下代码:
class Solution {public: int reverse(int x) { int rev = 0; while(x) { int temp = rev * 10 + x % 10; //判断翻转结果是否越界,如果越界,则返回0 if(temp / 10 != rev) return 0; rev = temp; x /= 10; } return rev; }};
可以看到我们使用了这样一个语句来判断:
int temp = rev * 10 + x % 10;
if(temp / 10 != rev) return 0;
我们知道,一旦发生了越界(假设越界的结果可以表示为正确值):
temp = INT_MIN + temp - INT_MAX = temp - 2 * INT_MAX - 1;
temp / 10 = rev - (2 * INT_MAX + 1) / 10;
如果没有越界:
temp = rev * 10 + x % 10;
temp / 10 = rev;
可以看出发生越界的话,temp / 10的结果会和没有发生越界时不一样,那么我们就可以利用这一点来判断,一旦越界,返回0;
阅读全文
0 0
- LeetCode No.7 Reverse Integer
- LeetCode No.7 Reverse Integer
- 【LeetCode从零单排】No.7 Reverse Integer
- Leetcode刷题记录 · No.7 Reverse Integer
- LeetCode 7 - Reverse Integer
- LeetCode(7) Reverse Integer
- leetcode 7REVERSE INTEGER
- [leetcode 7] Reverse Integer
- [Leetcode] 7 - Reverse Integer
- LeetCode 7:《Reverse Integer》
- [leetcode 7] Reverse Integer
- LeetCode | #7 Reverse Integer
- leetcode.7-----------Reverse Integer
- LeetCode 7: Reverse Integer
- leetcode-7 Reverse Integer
- leetcode(7)Reverse Integer
- LeetCode 7 - Reverse Integer
- leetcode 7 Reverse Integer
- 【php基础班】第13天 this、星星案例、图片切换、总结
- Windows NT/2000下的空连接
- Apache Web服务
- 数据压缩原理实验3_实验报告
- hadoop搭建教程,多环境通吃
- LeetCode No.7 Reverse Integer
- 【设计模式】—— 单例模式Singleton
- Python数据类型和变量5.16
- 线段树模版
- Java String类常用方法介绍(3)
- Python输错重输while小程序
- 树莓派与笔记本用远程桌面连接(Xrdp远程桌面服务)
- 基于 Redis 的分布式锁到底安全吗(上)?
- VUI-百度语音之Rest接口python学习笔记1-获取Token