目录
题目:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123 输出:321
示例 2:
输入:x = -123 输出:-321
示例 3:
输入:x = 120 输出:21
示例 4:
输入:x = 0 输出:0
Javascript解题:
方法一
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
let result = parseInt(x.toString().split("").reverse().join(""));
if (result < Math.pow(-2, 31) || result > Math.pow(2, 31) - 1) {
return 0;
}
if(x < 0){
result = -result;
}
return result;
}
注:
1.parseInt() 函数可解析一个字符串,并返回一个整数。
2.toString() 方法用于返回以一个字符串表示的 Number 对象值。
3.split() 方法用于把一个字符串分割成字符串数组。""里面的值为以其为分割线
4.reverse() 方法反转数组中元素的顺序。
5.join() 方法将数组作为字符串返回。""里面的值为以其为分隔符
6.需要判断当x<0时,result变为-result
方法二
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
var result = 0;
while(x != 0){
var a = x % 10;
x = parseInt(x / 10);
result = result * 10 + a;
if(result < Math.pow(-2,31) || result > Math.pow(2,31) - 1){
return 0;
}
}
return result;
};
注:
x = parseInt(x / 10) 也可以更改为 x = ~~(x / 10)
~~为取整的意思,js 与 java 不同在于 result 的数据类型不同
java解题:
class Solution {
public int reverse(int x) {
int result = 0;
while (x != 0) {
int a = x % 10;
x /= 10;
if (result > Integer.MAX_VALUE/10 || (result == Integer.MAX_VALUE / 10 && a > 7)) return 0;
if (result < Integer.MIN_VALUE/10 || (result == Integer.MIN_VALUE / 10 && a < -8)) return 0;
result = result * 10 + a;
}
return result;
}
}