Leetcode(7)之整数反转

孤街浪徒 提交于 2020-01-07 01:40:22

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

题目描述:

解题思路:

维护一个结果数,每次将x除以10取余弹出一位,弹出的数加上结果数乘以10。由于 int.MaxValue = 2147483647, in.MinValue = -2147483648,所以结果数乘以10之前要小于 2147483647/10 并大于 -2147483648/10,如果结果数乘以10之前等于 2147483647/10 或等于 -2147483648/10,那么对应的弹出数就要小于7或者大于-8。

代码:

public int Reverse(int x)
{
    int ret = 0;
    while (x != 0)
    {
        int pop = x % 10;
        x /= 10;
        if (ret > int.MaxValue / 10 || (ret == int.MaxValue / 10 && pop > 7)) return 0;
        if (ret < int.MinValue / 10 || (ret == int.MinValue / 10 && pop < -8)) return 0;
        ret = 10 * ret + pop;
    }
    return ret;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!