本文已参与[新人创作礼]活动,一起开启掘金创作之路
整数反转
1.反转采用<取模运算>
int reverse(int x){
int sum=0;
while(x) //x!=0
{
sum=sum*10+x%10;
x/=10;
}return sum;
}
结果
注意 sum=sum*10+x%10; 这里sum=sum*10 (x%10的值比较小可以忽略)会超出int的范围
故加此条件 if(sum>INT_MAX||sum<INT_MIN) return 0;
INT_MAX表示int范围的最大值
2.优化如下(此优化可以正常运行)
int reverse(int x){
long long sum=0;
while(x)
{
sum=sum*10+x%10;
x/=10;
if(sum>INT_MAX||sum<INT_MIN) return 0; //INT_MAX表示int最大取值
}return sum;
}
题目中又要求不能使用64位整数(即不能用long long)
3.二次优化(此优化可以正常运行)
int reverse(int x){
int sum=0;
while(x)
{
if(sum<INT_MIN/10||sum>INT_MAX/10)return 0;
sum=sum*10+x%10;
x/=10;
}return sum;
}