整数反转问题(符号与越界问题)

简介: 整数反转问题(符号与越界问题)

初级算法 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 给你一个 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

思路一:每次得到数字的个位对应的数字不断*10+个位数再加上符号就可以得到反转的整数


注意问题:整数过大越界问题,符号问题

image.png

编辑

class Solution {
    public int reverse(int x) {
        //先得到对应是正数还是负数
        int note = x>0?1:-1;
        //将数字转化成正数操作
        x = Math.abs(x);
        //这里的result和lastresule是有区别的对比防止数组越界的
        int result=0;
        int num=0;  
        int lastresult=0;
        while(x>0) {
            //得到个位的数字
            num=x%10;
            //一步步得到对应的反转值
            result=lastresult*10+num;
            //这一步是防止数字越界的,只需要与上一次的result比较是否能反推就可以得到结论如果越界返回0
             if((result-num)/10!=lastresult) {
                return 0;
            }
            lastresult=result;
            x=x/10;
        }
        //注意符号
        return result*note;
    }
}

image.png

3u1fbpfcp/9f805311891249e3ad5d0f90b409de2b

image.png

翻转每一位数字即可,原理比较简单,

public int reverse(int x) {
        int res = 0;
        while (x != 0) {
            int t = x % 10;
            int newRes = res * 10 + t;
            //如果数字溢出,直接返回0
            if ((newRes - t) / 10 != res)
                return 0;
            res = newRes;
            x = x / 10;
        }
        return res;
    }
        public int reverse(int x) {
        long res = 0;
        while (x != 0) {
            res = res * 10 + x % 10;
            x /= 10;
        }
        return (int) res == res ? (int) res : 0;
    }
![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/db755b8c48a749d5914b984fecc8f116~tplv-k3u1fbpfcp-watermark.image?)


相关文章
|
算法 Linux C++
【Linux系统编程】Linux目录操作:opendir、readdir与closedir详解
【Linux系统编程】Linux目录操作:opendir、readdir与closedir详解
980 0
|
4月前
|
开发工具 开发者 AI芯片
昇腾 Triton-Ascend 开源实战:架构解析、环境搭建与配置速查
本文深度解析Triton-Ascend开源项目,涵盖源码结构、编译流程与环境部署,重点针对Ascend 910B硬件提供从CANN安装到算子开发的保姆级指南,并详解Autotune调优策略与性能分析工具,助力开发者高效构建高性能AI算子。
672 0
|
监控 数据可视化 数据挖掘
【开发者必看—电商篇】数据赋能电商类App转化率循序增长
通过友盟+ 数据分析工具,团队深入分析了用户行为路径、转化漏斗、停留时间及错误事件等关键数据,定位到用户体验与产品性能的问题。经过精准优化,包括简化购物流程、修复技术故障及提升稳定性,最终显著提高了用户转化率。这一案例展示了数据驱动在产品优化中的重要作用。
【开发者必看—电商篇】数据赋能电商类App转化率循序增长
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
382 1
|
监控 编译器 C++
【代码讲解】【C/C++】获取文件最后修改的时间(系统时间)
【代码讲解】【C/C++】获取文件最后修改的时间(系统时间)
901 0
|
传感器 存储 算法
课程设计——基于FPGA的共享单车计费器设计(含源码)
课程设计——基于FPGA的共享单车计费器设计(含源码)
|
网络协议 Linux iOS开发
|
缓存
如何彻底卸载VSCode及其原来的插件配置缓存
如何彻底卸载VSCode及其原来的插件配置缓存
2412 0
|
存储 网络协议 数据库
Active Directory 域服务(一)
Active Directory 域服务(一)
1038 0