美文网首页
7. Reverse Integer

7. Reverse Integer

作者: YoungDayo | 来源:发表于2017-09-21 12:19 被阅读0次
    反转整型数字

    Reverse digits of an integer.

    ![Uploading 007_553011.jpg . . .]

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

    Note:
    The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.


    大致意思:反转整型数字。输入一个32位的有符号整型,你的函数应该返回0当整型数字溢出时。

    常规解法:这道题虽然简单,但是很容易出错。大家可能会想到的常规解法,就是先将整型数转换成字符串,反转后再转换成整型,但是这种方法有个小问题就是当遇到一个长度为10的整型数,如果个位数很大,正向不溢出,反转后可能溢出,那么结果就会出错的。当然也有对应的解决策略,就是最后接收反转后的整型数的变量声明为long,这样就可以解决这个问题了,当然需要进行溢出判断,只要超过int型的数就返回0。

    class Solution {
    public:
        int reverse(int x) {
            stringstream stream;
            stream<<abs(x);
            string num;
            num=stream.str();
            int n=num.length();
            for(int i=0,j=n-1;i<j;++i,--j)
            {
                char c=num[i];
                num[i]=num[j];
                num[j]=c;
            }
            stringstream st(num);
            long y;
            st>>y;
            if(y>INT_MAX || y<INT_MIN)
            return 0;
            if(x<0)
            return -y;
            else
            return y;
        }
    };
    

    代码解释:因为在leetcode中没有C语言的一些库文件,string和int之间的转换函数不会被识别,我们可以采用c++中的流转换。先把这两种方法单独列出来,以后还会经常用。

    1、int转string:

    int a=10;
    string st;
    stringstream stream;
    stream<<a;
    st=stream.str();
    

    2、string转int:

    string st="10";
    int a;
    stringstream stream(st);
    stream>>a;
    

    其他解法:每次对整型数进行余10操作,这样每次操作后得到的都是原整型数的个位、十位、百位..等等,然后通过数学运算,可以将整型数通过运算实现反转。反转乘加操作过程的倒数第二步就可以进行溢出判断,因为如果倒数第二步都溢出,乘10以后肯定还是溢出。这个方法不用转换成字符串,比较适合。

    class Solution {
    public:
        int reverse(int x) {
            int t,y=0;
            while(x!=0)
            {
                t=x%10;
                if(y>INT_MAX/10 || y<INT_MIN/10)
                {
                    return 0;
                }
                y=y*10+t;
                x/=10;
            }
            return y;
        }
    };
    

    相关文章

      网友评论

          本文标题:7. Reverse Integer

          本文链接:https://www.haomeiwen.com/subject/asuzsxtx.html