1. 程式人生 > >Reverse Integer(leetcode7)

Reverse Integer(leetcode7)

Reverse digits of an integer.

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.

解題思路:通過對x%10不斷得到當前x最後一位的數字,加到反轉後的數字當中,最後再判斷一下是否超出範圍就可以了。藉助了一個long型區域性變數有點投機取巧。

public class Solution {
	public  int reverse(int x) {
		int count = 0;	//記錄已經操作的位數
		long reverseNum = 0;	//反轉後的數
		while (x != 0) {
			reverseNum = x % 10 + (reverseNum * 10);
			x /= 10;
			count++;
			if (count == 10)	//判斷是否超過32位整數的範圍
				if (reverseNum >= Integer.MAX_VALUE || reverseNum < Integer.MIN_VALUE)
					return 0;
		}
		return (int)reverseNum;
	}
}

discuss高贊答案,無須long型區域性變數,加多一個判斷語句即可檢查是否超出範圍,非常巧妙。
public int reverse(int x)
{
    int result = 0;

    while (x != 0)
    {
        int tail = x % 10;
        int newResult = result * 10 + tail;
        if ((newResult - tail) / 10 != result)
        { return 0; }
        result = newResult;
        x = x / 10;
    }

    return result;
}