【leetcode-7】Reverse Integer(C語言)
阿新 • • 發佈:2018-12-30
問題描述:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
這道題比較討厭的地方在於如何判斷溢位,好吧,我的方法比較low,因為我只會比較+法的溢位,,但是效果還不錯,執行時間是4ms
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。
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;
}