分析:
- 将number转为string/array,然后进行翻转,问题不大
- 如果是负数,如:-123,翻转之后应该是-321,而不是321-
- 如果是尾数是0,翻转之后应该去掉,如:520,翻转之后应该是25,而非025,当然,这块在程序会自行处理的,一般不用自己考虑
- 翻转之后如果数字不在 [−2³¹, 231 − 1] 范围内,应该返回0
上代码:
代码语言:javascript复制function numReverse(num) {
if (typeof num !== 'number' || isNaN(num)) {
throw '类型不对';
}
const isPositiveNum = num >= 0 ? true : false;
let str = isPositiveNum ? String(num) : String(num).slice(1);
let newStr = '';
for (let index = str.length - 1; index >= 0; index--) {
newStr = newStr str[index];
}
// Math.pow(2, 31) - 1 ➡️ 2147483647
// Math.pow(-2, 31) ➡️ -2147483648
if((parseFloat(newStr) > 2147483647) || (parseFloat(newStr) < -2147483648)) {
return 0;
}
return isPositiveNum ? `${ newStr * 1 }` : `-${ newStr * 1 }`;
}
测试:
代码语言:javascript复制console.log('520:', numReverse(520)); // 52
console.log('21474836478:', numReverse(21474836478)); // 0
console.log('-123:', numReverse(-123)); // -321
console.log('456:', numReverse(456)); // 654
console.log('-12.34:', numReverse(12.34)); // -43.21