1. 题目描述

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

  1. 示例 1:
  2. 输入: 123
  3. 输出: 321
  4. 示例 2:
  5. 输入: -123
  6. 输出: -321
  7. 示例 3:
  8. 输入: 120
  9. 输出: 21

注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

2. 解题思路

可以先忽略数字的正负,因为正负不会影响最后结果,最后加上就可以。
(1)首先判断输入的是否是数字
(2)将数字转换为字符串,去除正负号,使用字符串的翻转函数对其进行操作
(3)将得到的结果添加正负号
(4)返回最后的结果

3. 代码实现

  1. /**
  2. * @param {number} x
  3. * @return {number}
  4. */
  5. var reverse = function(x) {
  6. if(typeof x !='number'){
  7. return;
  8. }
  9. const MIN = -2147483648;
  10. const MAX = 2147483647;
  11. const res=x>=0?String(x).split('').reverse().join(''):String(x).slice(1).split('').reverse().join('');
  12. const result = x>=0?parseInt(res):0-parseInt(res);
  13. if(result>=MIN && result<=MAX){
  14. return result;
  15. }else{
  16. return parseInt(0); // 不在范围之内时返回0
  17. }
  18. };

4. 提交结果

7. 整数反转 - 图1