【Leetcode】【Reverse Integer】【反转整数】【C++】

  • 题目:给定一个32位有符号整数,将其反转
  • 说明:若反转结果或者给定的有符号整数不在32位bits所能表示的范围内,则输出0
  • 例子:    input:120 output:21 

                        input:-321 output:-123

  • 思路:首先判断输入是否在[-231,231-1]范围内,若不在直接返回0;若在,如果有的话,去掉整数末尾的0;最后将其反转,每求取一次当前结果,就要判断是否溢出,如果溢出,则返回0,否则返回结果。
  • 代码:
    class Solution {
    public:
        int reverse(int x) {
            long long res=0;
            long long max_val=1;
            max_val=max_val<<31;
            if(x>=max_val)
                return res;
            while(x && x%10==0)
            {
                x=x/10;
            }
            while(x)
            {
                res=res*10+x%10;
                if(res>=max_val || res<(-1*max_val))
                    return 0;
                x=x/10;
            }
            return res;
        }
    };

     

posted @ 2018-06-08 01:42  dreamer123  阅读(770)  评论(0编辑  收藏  举报