您的位置:首页 > 编程语言 > C语言/C++

【leetcode-7】Reverse Integer(C语言)

2015-07-11 08:43 567 查看
问题描述:

Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321

这道题比较讨厌的地方在于如何判断溢出,好吧,我的方法比较low,因为我只会比较+法的溢出,,但是效果还不错,运行时间是4ms

[code]int reverse(int x) {
     bool negative = false;
     if(x<0){
        negative = true;
        x = -x;
     }
     int nums = 0;
     int tmpNum;
     int tmp;
     int i;
     while(x){
         tmpNum = nums;
         tmp = 0;
         for(i = 0;i<10;i++){
            tmp = tmp+tmpNum;
            if(tmp<tmpNum)
                return 0;
         }
         nums = tmp;
         nums=nums+x%10;
         x = x/10;
     }
     if(negative)
        return -1*nums;
     return nums;
}


看了博客之后发现这种判断溢出的方法很不错。改之,但是时间居然会达到8ms。

[code]int reverse(int x) {
     bool negative = false;
     if(x<0){
        negative = true;
        x = -x;
     }
     int nums = 0;
     int tmpNum;
     int tmp;
     int i;
     while(x){
         if(nums>(INT_MAX-x%10)/10)//成立,则一定会超
             return 0;
         nums=nums*10+x%10;
         x = x/10;
     }
     if(negative)
        return -nums;
     return nums;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: