leetcode 07.整数翻转
Posted 龚喜发财+1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 07.整数翻转相关的知识,希望对你有一定的参考价值。
1.给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
-2147483648=-231<x<231-1=2147483647
难点:给定了数值的范围,需要对结果进行判断
**解法1:**将翻转过程的结果设置成long类型的数据,在翻转完成后,对数值进行判断(好像不符合题意,但我看到大佬的解法,我内心os:牛批)
public int reverse(int x) {
long result=0;
while(x!=0){
result=result*10+x%10;
x=x/10;
}
return (int)result==result? (int)result:0;
}
long类型转换为int类型是向下转换,会发生溢出
**解法2:**因此我们需要在「推入」数字之前,判断是否满足
-231<result*10+x%10<231-1,若该不等式不成立则返回 0.
public int reverse(int x) {
int result=0;
while(x!=0){
if (result < Integer.MIN_VALUE / 10 || result > Integer.MAX_VALUE / 10) {
return 0;
}
result=result*10+x%10;
x=x/10;
}
return result;
}
}
以上是关于leetcode 07.整数翻转的主要内容,如果未能解决你的问题,请参考以下文章
leecode---07---数字整除取余操作,取余整除---翻转一个整数复件