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;
};

<<:  C# 如果class本身当参数传递是 call by reference , 那前面加上ref有何用呢?

>>:  高凝聚力和低耦合(High Cohesion and Low Coupling)

过保碎屏就得换手机?试试iPhone爆mon来拯救!

现在的智能手机萤幕是越做越大,不论是看电影还是打游戏都有非常好的体验,但随之而来的,是更高的碎屏风险...

[Day16] 第十六章-Skill的API 服务建构 (migration,route,controller,model)

前言 昨天我们建立了Skill的migtaion 我们今天目标是把简单的API定义好来实作吧!! 除...

你的 MVVM 不是你的 MVVM

相信各位也看了 N 个介绍 MVVM 的文章了吧,不知道你们有没有觉得大家所描述的 MVVM 是不是...

【从零开始的 C 语言笔记】第二十四篇-程序设计的流程图制作

不怎麽重要的前言 上一篇介绍了比较少使用到的switch条件式,其实也可以用if条件式代替使用,不过...

[Day31] 新的开始

好不容易花了30天养成的习惯,当然要持续下去! 前30天混杂着过去和现在的经验,要成为一个合格PM,...