目录

7. 整数反转

给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。

简单

给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [ $ −2^{31} $ ,  $ 2^{31} −1$ ] ,就返回 0 。

假设环境不允许存储 64 位整数(有符号或无符号)。  

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

提示:

  • $-2^{31} <= x <= 2^{31} - 1$

1 解题思路

  • 定义 long 型数据 n

  • 当 x 不为 0 时

    • 将 n 扩大为原来的十倍(相当于每位的数字向左移一位),同时 n 加上 x 的个位数字 n = n * 10 + x % 10;
    • x 整除 10 (相当于删除掉个位)
  • 当 x 为 0 时结束

    • 利用强制类型转换将n转换为int型,若转换前后大小不变则未越界,否则返回 0
示例

示例 1 为例:

x n while
begin 0 true
123 3 true
12 32 true
1 321 true
0 end false
  • 对 n 进行强制类型转换,转换前后相等,返回 321

2 代码实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
class Solution {
    public int reverse(int x) {
        long n = 0;
        while(x!=0){
            n = n * 10 + x % 10;
            x /= 10;
        }
        return (int)n==n?(int)n:0;
    }
}

3 题目链接

https://leetcode-cn.com/problems/reverse-integer/