LeetCode刷题:将一个 32 位有符号整数的每位上的数字进行反转(day1)
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
代码实现
class Solution {
public int reverse(int x) {
//接收翻转后整数
long a = 0;
//记录字符串的长度
int b =0;
if(x>=0){
//正数
b=(x+"").length();
}else{
//负数有一个负号
b=(x+"").length()-1;
}
while (x!=0){
for(int i=0;i<b;i++){
//当前最后一位数字 ,负数则显示的是负数-25%10 等于 -5
int a1 = x%10;
//把最后一位数字剔除掉的新数字
x=(x-a1)/10;
a += (int) (a1*Math.pow(10,b-i-1));
}
}
//超过范围的返回0
if((a>Math.pow(2,31)-1)||(a<(-1)*Math.pow(2,31))){
return 0;
}
return (int) a;
}
}
执行结果: