LeetCode 07 整数反转
题目:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
-231 <= x <= 231 - 1
通过次数1,087,516提交次数3,074,044
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解:
思路很简单,每次取原数最低位加上新数✖️10即可
图解:
例:12345 步骤如下:
1234 | 123 | 12 | 1 | |
⬇(5) | ⬇(4) | ⬇(3) | ⬇(2) | ⬇(1) |
0x10+5=5 | 5x10+4=54 | 54x10+3=543 | 543x10+2=5432 | 5432x10+1=54321 |
需要注意的是反转后的数字可能超过Int类型数值范围,可巧妙利用Long类型存储后转换
代码:
1 2 3 4 5 6 7 8
| public int reverse(int x) { long n = 0; while(x != 0) { n = n*10 + x%10; x = x/10; } return (int)n==n? (int)n:0; }
|