【数据结构和算法】反转数字,图文详解

反转数字

http://www.nowcoder.com/questionTerminal/1a3de8b83d12437aa05694b90e02f47a

1,翻转每一位数字即可,原理比较简单,我们直接来看图分析 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;
    }

2,实际上我们还可以改的更简洁一下

    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;
    }

如果觉得有用就给个赞吧,还可以关注我的《牛客博客》查看更多的详细题解

数据结构和算法 文章被收录于专栏

专注于算法题的讲解,包含常见数据结构,排序,查找,动态规划,回溯算法,贪心算法,双指针,BFS和DFS等等。

全部评论
第2个代码不符合要求,题目不允许使用long型变量,“假设本题不允许存储 64 位整数”
1 回复 分享
发布于 2022-02-06 19:49
通过这道题我给大家分享以下 取余的小坑: 在编译器中,两个异号的数取余之后的结果取决于分子的符号。 * (1)负数%负数,编译器会将分母的负数自动转换为正整数, * 然后再将分子负数的负号提取出来,将两个正整数取余,最后的结果加上负号就好了。 * (2)负数%正数,编译器先将分子负数的负号提取出来,将两个正整数取余,最后结果加上负号即可。 * (3)正数%负数,编译器自动将分母负数转换为正整数,然后两个正整数取余得到就是最终结果。
点赞 回复 分享
发布于 2022-02-06 20:10
有一个过不了啊
点赞 回复 分享
发布于 2021-07-29 20:01
大佬 你好 你的算法题PDF我拿走了昂
点赞 回复 分享
发布于 2021-07-21 12:34
newRes变量扫弦积累
点赞 回复 分享
发布于 2021-07-20 21:51
为什么用res== res 这个是判断溢出?why ?
点赞 回复 分享
发布于 2021-07-15 15:03
大佬好牛逼,突然感觉这题简单好多!
点赞 回复 分享
发布于 2021-07-11 19:00

相关推荐

06-26 19:47
中南大学 Java
悲,毕业了!这是个坏事儿啊!
爱睡觉的冰箱哥:《这是个好事啊》---峰哥浪走天涯
毕业后不工作的日子里我在...
点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
06-27 15:15
长安大学 Java
哈哈哈,你是老六:这种就是培训机构骗钱的
点赞 评论 收藏
分享
评论
37
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务