zoukankan      html  css  js  c++  java
  • Leetcode 7 Reverse Integer 数论

    题意:将整数倒置,该题简单但是需要注意数据的范围,难得的好题。

    如果出现1000000003或者-2000000003,倒置后的数超过int的范围,因此返回0,出现这种情况可以使用long long,也可以在在乘以10时进行判断。

    注意:Leetcode是用linux环境的,所以他用的是g++4.78编译器,不是vc++编译器,为此在vc++编译器上我们用__int64,而g++编译器就是long long,这些是64位的int,很有用的东西,不做过相关的竞赛或者项目的人,大部分人都不知道C++有64位的int。

    当然现在的编译器都支持C++11标准,就不要用__int64或long long,而是用int64,当然还有int128,Leetcode的编译器仅仅支持C++03标准,跟不上时代了,是不是更新下?当然这是题外话。。

    然后给出两种解法:

    long long的解法,很黄很暴力。。。

    class Solution {
    public:
        int reverse(int x) {
            long long ans = 0;
            int sign = 1;
            if(x < 0){
                sign = -1;
                x = -x;
            }
            for(; x; x/= 10){
                ans = ans * 10 + (x % 10);
            }
            ans *= sign;
            if(ans > (long long)2147483647) return 0;
            if(ans < (long long)-2147483646) return 0;
            return ans;
        }
    };

    int + 乘之前判断的解法,设计相对精妙

    class Solution {
    public:
        int reverse(int x) {
            unsigned int MAX = 1<<31;
            int ans = 0;
            int sign = 1;
            if(x < 0){
                sign = -1;
                x = -x;
            }
            for(; x; x/= 10){
                if(ans > MAX / 10) return 0;//乘之前的判断,防止溢出
                ans = ans * 10 + (x % 10);
            }
            
            return ans*sign;
        }
    };
  • 相关阅读:
    简单地通过Python库使用python的socket编程
    js 实现继承的几种方式
    JAVA中获取当前系统时间
    IntelliJ Idea 常用快捷键列表
    关于报错:There is already 'xxxController' bean method的解决方法
    mysql 使用 GROUP BY 时报错 ERROR 1055 (42000)
    安装系统,用cmd进行分区
    Bootstrap关闭当前页
    bootstrap的日期选择器
    Bootstrap如何关闭弹窗
  • 原文地址:https://www.cnblogs.com/onlyac/p/5465420.html
Copyright © 2011-2022 走看看