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

反转数字

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

相关推荐

notbeentak...:就抓,嗯抓,开不开匿名都要抓,一点坏事不让说,就对公司顶礼膜拜佩服的五体投地就对了
点赞 评论 收藏
分享
牛至超人:把哈工大,再加大加粗,看见闪闪发光的哈工大字样,面试官直接流口水
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
37
2
分享

创作者周榜

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