Reverse Integer 413

Question

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

Solution

sum表示之前取的数字的组合,只要不断地取当前数字的最低位,加到sum 10中,直到当前数字为0为止。其中有一点需要注意,在将当前最低位加入到sum 10后,要再将新的结果/10看能不能得到原来的sum,若得不到原来的数,则说明已经溢出(-2^32~2^32。-35 % 10 = -5。

代码如下:

public class Solution {
    /**
     * @param n the integer to be reversed
     * @return the reversed integer
     */
    public int reverseInteger(int n) {
        // Write your code here
        int sum = 0;
        while(n != 0){
            int temp = sum * 10 + n % 10;
            n /= 10;
            //若*10之后的数再/10得不到原来的数,则说明已经溢出(-2^32~2^32)
            if(temp / 10 != sum){
                sum = 0;
                break;
            }
            sum = temp;
        }

        return sum;
    }
}

results matching ""

    No results matching ""