js整数翻转

2023-06-26 18:30:41 浏览数 (1)

分析:

  1. 将number转为string/array,然后进行翻转,问题不大
  2. 如果是负数,如:-123,翻转之后应该是-321,而不是321-
  3. 如果是尾数是0,翻转之后应该去掉,如:520,翻转之后应该是25,而非025,当然,这块在程序会自行处理的,一般不用自己考虑
  4. 翻转之后如果数字不在 [−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

0 人点赞