Given a 32-bit signed integer, reverse digits of an integer.
反轉數值,反轉後的範圍介於[-2147483648
to 2147483647
]之間,負數反轉後還是負數,若溢位的話,回傳0。
Input: 123
Output: 321
Input: -123
Output: -321
Input: 120
Output: 12
這題的重點在於,若遇到以下情況該如何處理:
先設定邊界值:
let maxValue = Math.pow(2, 31) - 1;
將參數x
,取絕對值,轉陣列反轉後,再組字串轉數值,轉數值的過程中解決最高位數為0的問題:
let v = +Array.from('' + Math.abs(x)).reverse().join('');
判斷原參數是否為負數:
let v2 = x < 0 ? v * - 1 : v;
判斷是否溢位:
let v3 = (-1 * maxValue - 1 <= v && v <= maxValue) ? v2 : 0;
var reverse = function(x) {
let maxValue = Math.pow(2, 31) - 1;
let v = +Array.from('' + Math.abs(x)).reverse().join('');
let v2 = x < 0 ? v * - 1 : v;
let v3 = (-1 * maxValue - 1 <= v && v <= maxValue) ? v2 : 0;
return v3;
};