最近刷到了一道medium难度的算法题,比较典型,可以用语法特性和常规解法来解决。题目如下:
给定一个32字节的有符号整型数字x,将x反转过来返回。如果反转x会让其数值超出32位有符号整型数字范围[-2^31, 2^31 -1],那么就返回0。
假设运行环境不允许你存储64位整型数字(有符号或者无符号)。
Example 1:
Input: x = 123
Output: 321
Example 2:
Input: x = -123
Output: -321
Example 3:
Input: x = 120
Output: 21
约束条件:
-2^31
反转整数有两个大的思路,一个是把数字转换成字符串,然后把正负号单独保存,针对纯数字的字符串进行反转,当然还是要注意超出32位整型数值范围要返回0的边界情况。几乎所有编程语言都有大量针对字符串的内置函数,所以该算法非常取巧。
用js具体的解法如下:
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
let ans = x.toString().split('').reverse().join('');
if (x = Math.pow(2, 31) -1 || x
这个解法比较巧妙,绕过了传统思维里面针对数字的处理,但是空间复杂度效率不高。
另外一种解法就是通过除10来反转数字,具体如下:
var reverse = function(x) {
if (x / 10 = 1) {
diff = Math.floor(num % 10);
reverse = reverse * 10 + diff;
num = num /10;
}
if (num > Math.pow(2, 31) - 1) return 0;
return num * isNegative;
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 使用开源时序数据库 GreptimeDB 存储开源实时监控 HertzBeat 的指标度量数据
使用开源时序数据库 GreptimeDB 存储开源实时监控 HertzBeat 的指标度量数据 什么是 GreptimeDB GreptimeDB 是一款开源、分布式、云原生时序数据库,融合时序数据处理和分析。 完善的生态系统,支持大量开放协议,与 MySQL…