Leet Code 2. Two Numbers

题目
Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.

翻译
给定一个带符号的32位元x,请返回x,并让数字相反。
如果反转x导致该值超出32位元範围[-231、231-1],则返回0。

提示:
Input: x = 123
Output: 321

Input: x = -123
Output: -321

Input: x = 120
Output: 21

有注意到反转后的数可能会超过範围吗,例如说1000000003反转后就超过了32位元的integer。这种情况要怎么处理?

在这个问题中,超过integer只要回传0就可以。

加深容易混杂的语法
parseInt() 函数:可解析一个字符串,并返回一个整数。
toString() 函数:可把一个 Number 对象转换为一个字符串,并返回结果
Math.pow(base, exponent) 函数:第一个参数为原始值,第二个参数为次方
ex:Math.pow(7, 2); // 49
ex:Math.pow(4, 0.5); // 2

Math.sign() 函数:只会返回正数或负数,+ / -
ex:Math.sign(1010); // 1
ex:Math.sign(-0); // -1
ex:Math.sign(0); // 0
ex:Math.sign('-3'); // -1

思路
先把数字转成string后并反转,在判断res是否超出32位元的integer,

/** * @param {number} x * @return {number} */const reverse = function (x) {    let res = parseInt ( x.toString().split('').reverse().join('') );        if( res > Math.pow (2, 31) -1 ) {        return 0;    }    return Math.sign (x) * res;};

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章