Leetcode —7.整数反转《超详解》

46 阅读1分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路

整数反转

leetcode-cn.com/problems/re…

 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;
}