Reverse Integer(leetcode7)
阿新 • • 發佈:2019-01-26
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; }