题目
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。文章来源:https://www.toymoban.com/news/detail-522900.html
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。文章来源地址https://www.toymoban.com/news/detail-522900.html
思路
- 整数反转,我们可以采用从后面往回读
- 读取最后一位 digit = x % 10;
- 拼接最新结果 result = result * 10 + digit;
- 边界条件:
- x = 0 直接返回
- x 大于0时, 有result * 10 + digit <= 2147483647
- x小于0时,有result * 10 + digit >= -2147483648
代码
var reverse = function(x) {
const MAX = 2147483647;
const MIN = -2147483648;
let digit = 0;
let result = 0;
if (x === 0) return x
// 反转,从最后以为开始取,取出来作为新数字的第一位
while(x > 0) {
// 求10的余,得到当前最后一位的值
digit = x % 10;
// 移除最后一位
x = Math.floor(x / 10);
// 将最新得到的位数拼到新数字中
// 判断范围
if(result > (MAX - digit) / 10) {
return 0
}
result = result * 10 + digit;
}
while (x < 0) {
digit = x % 10;
// 移除最后一位
x = Math.ceil(x / 10);
// 将最新得到的位数拼到新数字中
// 判断范围
if(result < MIN / 10 - digit / 10) {
return 0
}
result = result * 10 + digit;
}
return result;
};
到了这里,关于leetcode整数反转,js实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!