7.整数回转(javascript)(7.ReverseInteger)

原创
小哥 3年前 (2022-11-16) 阅读数 9 #大杂烩

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

Given a 32-bit signed integer, reverse digits of an integer.

示例 1:

输入: 123
输出: 321

Example 1:

Input: x = 123
Output: 321

示例 2:

输入: -123
输出: -321

Example 2:

Input: x = -123
Output: -321

示例 3:

输入: 120
输出: 21

Example 3:

Input: x = 120
Output: 21

注意:

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

Note:
Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. [−2 31 ,2 31 -1]
For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

reverse是将数组进行反转
1、先将 数字转换成字符串,再将字符串分割成数组arr
2、判断数字是正数还是负数
(1)数字是正数, arr[0] !== "-" ,将数组arr进行reverse(反转),join(’’)进行拼接,最后转换成数组

[‘0’,‘0’,‘1’]转换成数组1,例一和例三可以放在一起

溢出判断

if (num <= 2147483647 && num >= -2147483648){
           return num;
       }else{
           return 0;
       } 

(2)数字是负数,, arr[0] === "-" ,去掉负数 delete arr[0]; 将数组arr进行reverse(反转),join(’’)进行拼接,最后转换成数组

var a=10;
console.log(~a);//-11
console.log(~a+1);//-10

溢出判断

if (num <= 2147483647 && num >= -2147483648){
           return ~num+1;
       }else{
           return 0;
       }

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
   var str = x.toString();
   let arr = str.split();
   if (arr[0] !== "-"){
       let num = Number(arr.reverse().join());
       if (num <= 2147483647 && num >= -2147483648){
           return num;
       }else{
           return 0;
       } 
   }else if(arr[0] === "-"){
       delete arr[0];
       let num = Number(arr.reverse().join());
       if (num <= 2147483647 && num >= -2147483648){
           return ~num+1;
       }else{
           return 0;
       }
   }
};
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除