LeetCode #7 Reverse Integer
来源:互联网 发布:java 股票指标算法库 编辑:程序博客网 时间:2024/06/10 04:47
题目
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
解题思路
这道题一般会有两种思路:一是把输入的整数转化为字符串,再进行字符串倒转操作;二是对输入的整数每次对10进行取模,依次取出从最低位到最高位的数字,每次相加时,先把之前得到的结果
如果用第一种方法,对于末尾是 0
的整数(比如 1000100
)的倒转操作比较麻烦,并且在判断倒转后的数是否溢出时也比较麻烦(如 2047483649
倒转后是 9463847402
,超出了32位整数所能表示的范围),因此考虑用第二种方法。第二种方法可以自动忽略掉整数末尾的 0
,但是仍然要处理倒转后溢出的问题。
我自己在答题的时候踩过的坑就是:判断溢出不能仅仅依靠符号的改变(比如正数加了一个正数后变成负数),有些过大的正数溢出以后也会变成正数,比如 int
类型的 9452457836
程序输出后得到 862523244
。解决这个问题的方法是,把一个数进行某个操作后得到一个结果,把这个结果进行逆操作后如果能够恢复到原来的数,说明这个操作没有溢出。
Java代码实现
class Solution { public int reverse(int x) { int rst = 0; while (x != 0) { // 先用临时变量tmp保存运算后的结果 int tmp = rst * 10 + x % 10; // 当结果进行逆操作后无法恢复,说明已经溢出 if (tmp / 10 != rst) return 0; rst = tmp; x /= 10; } return rst; }}
另外需要提醒自己的就是负数取模以后还是得到负数,比如 (-48 % 10 == -8)
,因此对于负数来说,上述代码也是正确的。
- 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
- leetcode #7 Reverse Integer
- leetcode 7 -- Reverse Integer
- LeetCode 7: Reverse Integer
- Leetcode[7]-Reverse Integer
- 技术文章 |“小数据”的统计学
- 如何u盘安装Linux系统CentOS7.2
- eclipse 创建maven 项目 动态web工程完整示例
- javassist
- https://github.com/fendouai/Awesome-Chatbot
- LeetCode #7 Reverse Integer
- Codeforces 854D Jury Meeting【思维+前后缀和+二分】
- sql with as 用法
- bzoj 1637: [Usaco2007 Mar]Balanced Lineup
- sass+compass异常:error screen.scss (Line 3: File to import not found or unreadable: blueprint/reset.)
- 链表 c++
- linux启动XAMPP命令
- kafka--简介、组件构成、安装、基础操作
- poj1062 [ZJOI2002]昂贵的聘礼(spfa+枚举)