【刷题记录】7. 整数反转

简介: 【刷题记录】7. 整数反转

一、题目描述


来源:力扣(LeetCode)


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


如果反转后整数超过 32 位的有符号整数的范围[−

网络异常,图片无法展示
|
, $2^{31} − 1],就返回 0。


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


示例 1:


输入:x = 123


输出:321


示例 2:


输入:x = -123


输出:-321


示例 3:


输入:x = 120


输出:21


示例 4:


输入:x = 0


输出:0


提示:


-231 <= x <= 231 - 1


二、思路分析


按照正常思路我们很容易想到


  • 每次对数字取余 n = x % 10 记得到当前位的数字
  • 反转后的数字为 res = res * 10 + n


此时即可得到反转后的数字,但是以为题目要求


如果反转后整数超过 32 位的有符号整数的范围[−

网络异常,图片无法展示
|
, $2^{31} − 1],就返回 0。


  • 所有在每次进行下一位数数组的反转时,要判断res是否已经超出了题目的范围


三、代码实现

class Solution {
    public int reverse(int x) {
        int res =0;
while (x !=0) {
if (res < Integer.MIN_VALUE / 10 || res > Integer.MAX_VALUE / 10) {
                return 0;
            }
            int n = x % 10;
            x /=10;
            res = res * 10+ n;
        }
        return res;
    }
}


复杂度分析


  • 时间复杂度:
    网络异常,图片无法展示
    |
    。翻转的次数即 x 十进制的位数
  • 空间复杂度:
    网络异常,图片无法展示
    |


运行结果


网络异常,图片无法展示
|


总结


这个题目实现的思路来说,还是很容易想到的。
这道题目的重点是在于在于对反转后数组是否在题目规定范围内的处理。

目录
相关文章
|
7月前
|
Java
每日一题《剑指offer》数组篇之数组中重复的数字
每日一题《剑指offer》数组篇之数组中重复的数字
59 0
每日一题《剑指offer》数组篇之数组中重复的数字
【剑指offer】- 数组中重复的数字 -48/67
【剑指offer】- 数组中重复的数字 -48/67
剑指offer-1.找出数组中重复的数字
剑指offer-1.找出数组中重复的数字
34 0
|
存储 算法 Java
leetcode刷题记录:7.整数反转,8.字符串转整数,9.回文数
leetcode刷题记录:7.整数反转,8.字符串转整数,9.回文数
60 0
|
索引
剑指offer_数组---数组中重复的数字
剑指offer_数组---数组中重复的数字
48 0
|
C++
剑指offer 01. 找出数组中重复的数字
剑指offer 01. 找出数组中重复的数字
57 0
剑指offer 03. 数组中的重复数字
剑指offer 03. 数组中的重复数字
80 0
剑指offer 03. 数组中的重复数字
力扣刷题记录——459.重复的字符串、461. 汉明距离、476. 数字的补数
力扣刷题记录——459.重复的字符串、461. 汉明距离、476. 数字的补数
156 0
力扣刷题记录——459.重复的字符串、461. 汉明距离、476. 数字的补数
|
算法 Java 索引
数组中重复的数字(剑指offer 03)
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
100 0
|
存储 算法
刷 整数反转 | 刷题打卡
刷 整数反转 | 刷题打卡
83 0