zoukankan      html  css  js  c++  java
  • 【leetcode】Reverse Integer(middle)☆

    Reverse digits of an integer.

    Example1: x = 123, return 321
    Example2: x = -123, return -321

    总结:处理整数溢出的方法

    ①用数据类型转换long  或 long long

    ②在每次循环时先保存下数字变化之前的值,处理后单步恢复看是否相等 (比③好)

    ③整体恢复,看数字是否相等。

    思路:注意30000这样以0结尾的数字,注意越界时返回0.

    我检查越界是通过把翻转的数字再翻转回去,看是否相等。

    int reverse(int x) {
            int xx = abs(x); 
            int ans = 0;
            int zeros = 1; //如果x = 2000 这种后面有很多0 那翻转后是2 再翻转还是2 需要乘以1000才能恢复成2000
    
            while(xx != 0)
            {
                int r = xx % 10;
                xx /= 10;
                ans = ans * 10 + r;
                if(ans == 0) zeros *= 10;
            }
            ans = (x < 0) ? -ans : ans;
            
            //检测是否溢出 思路把数字重新翻转回去,看结果是否相同
            int anss = abs(ans), check = 0;
            while(anss != 0)
            {
                int r = anss % 10;
                anss /= 10;
                check = check * 10 + r;
            }
            check = (x < 0) ? -check : check;
            check *= zeros;
    
            if(check != x) //溢出了
                return 0;
            else
                return ans;
        }

    基于②的判断:

    public int reverse(int x)
    {
        int result = 0;
    
        while (x != 0)
        {
            int tail = x % 10;
            int newResult = result * 10 + tail;
            if ((newResult - tail) / 10 != result)
            { return 0; }
            result = newResult;
            x = x / 10;
        }
    
        return result;
    }

    基于①的判断:

    int reverse(int x) {
            long num = abs((long)x);
            long new_num = 0;
            while(num) {
                new_num = new_num*10 + num%10;
                num /= 10;
            }
    
            if (new_num > INT_MAX) {
                return 0;
            }
            return (x<0 ? -1*new_num : new_num);
        }
  • 相关阅读:
    Python函数篇(7)-正则表达式
    Python函数篇(6)-常用模块及简单的案列
    Python函数篇(5)-装饰器及实例讲解
    Android 涂鸦最佳实践
    事件总线框架---Otto
    Android App补丁更新
    Android实现换肤功能(二)
    Android实现换肤功能(一)
    网络请求框架---Volley
    注解框架---AndroidAnnotations
  • 原文地址:https://www.cnblogs.com/dplearning/p/4430294.html
Copyright © 2011-2022 走看看