算法记录
LeetCode 题目:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [ − 2 31 , 2 31 − 1 ] [−2^{31}, 2^{31} − 1] [−231,231−1] 就返回 0。
说明
一、题目
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
二、分析
- 和判断回文数字的方法类似。
- 首先根据题目的意思得出【-9, 9】之间的数据可直接进行返回即可。
- 在进行取余求和时要注意判断
int
数据的范围越界,因为小数会自动向大数进行转型,int
数据在越界后转换为了long
类型,而不会自动的向下转型为int
,因此可以做(result * 10) / 10 != result
的一步判断来确定是否会越界 - 越界则截至返回
0
,否则继续进行数据的下一位运算。
class Solution {
public int reverse(int x) {
if (x % 10 == x)
return x;
int result = 0;
while(x != 0){
if((result * 10) / 10 != result){
return 0;
}
result = result * 10 + x % 10;
x = x / 10;
}
return result;
}
}
总结
熟悉基本数据类型 int
和 long
之间的关系,了解类型的自动转换原则。