写点什么

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

作者:WangNing
  • 2022 年 7 月 11 日
  • 本文字数:611 字

    阅读完需:约 2 分钟

一、题目描述

来源:力扣(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 十进制的位数

  • 空间复杂度:

运行结果


总结

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

发布于: 刚刚阅读数: 4
用户头像

WangNing

关注

还未添加个人签名 2020.10.13 加入

一个只想提(快)升(乐)自(摸)我(鱼)的混子选手~

评论

发布
暂无评论
【刷题记录】7. 整数反转_7月月更_WangNing_InfoQ写作社区