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

反转数字

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

我把部分算法题整理成了PDF文档,截止目前总共有900多页,大家可以下载阅读
链接https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ
提取码:6666

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

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

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

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

相关推荐

jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
35 2 评论
分享
牛客网
牛客企业服务