美文网首页
7. Reverse Integer

7. Reverse Integer

作者: Al73r | 来源:发表于2017-09-19 12:51 被阅读0次

题目

Reverse digits of an integer.
Example1: x = 123, return 321Example2: x = -123, return -321
click to show spoilers.
**Note:
**The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

思路

基本的模运算与整除运算。判断溢出这个倒是有点新奇,不过也不难。

实现

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

思考

走了很多歪路,不过也有了一些体会:
一是用两个基来取得输入和输出的某一位比用其指数要快一些;
二是判断溢出可以用符号来判断也可以用long long配合范围来判断,这两者孰优孰劣还真不好说。
三是从简单程度上来看,用long long 进行运算,再判断范围会比较清晰。
四是可以改进,不需要两个基就可以得出答案,比如:

class Solution {
public:
    int reverse(int x) {
        long long res = 0;
        while(x) {
            res = res*10 + x%10;
            x /= 10;
        }
        return (res< INT_MIN|| res>INT_MAX) ? 0 : res;
    }
};

相关文章

网友评论

      本文标题:7. Reverse Integer

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