[Leetcode] 7.Reverse Integer 翻转整数

Related Topics
[Math]

Similar Questions
[String to Integer (atoi)]

题目:Reverse digits of an integer. Returns 0 when the reversed integer overflows (signed 32-bit integer).

Example
Given x = 123, return 321
Given x = -123, return -321

思路:通过不断求余得到最后一位数字,并迭代成权数10,使其位数增高。本题主要是要考虑溢出的问题。解决溢出问题有以下办法:

  • 使用long类型的对象存储翻转后的结果,直接判断是否超出范围;
  • 仍使用int类型存储,在乘10之前进行判断;
  • 当将溢出数据赋给int对象时,高位会丢失,因此如果超出了范围,其除以10的结果就不会跟之前的结果一致,根据此判断。

java解法2

class Solution {
    public int reverse(int x) { 
        int res = 0;
        while (x != 0) {
            if (Math.abs(res) > Integer.MAX_VALUE/ 10) return 0;
            res = res * 10 + x % 10;
            x /= 10;
        }
        return res;
    }
}

java解法3

class Solution {
    public int reverse(int x) {
        int res=0,t;
        while(x!=0) {
            t=res*10+x%10;
            if(t/10!=res) return 0;
            res=t;
            x=x/10;
        }
        return res;
    }
}

你可能感兴趣的:([Leetcode] 7.Reverse Integer 翻转整数)