整数反转
分析算法:
代码:
int reverse(int x) {
int rev = 0;
int pop;
while(x !=0){
pop = x % 10;
x /= 10;
if(rev > INT_MAX/10 || (rev == INT_MAX / 10 && pop > 7)) return 0;//正数条件下:1、当rev > INT_MAX/10下 一定溢出 2、当rev == INT_MAX/10时,反转后最后一位>7 一定会发生溢出
if(rev < INT_MIN/10 || (rev == INT_MIN / 10 && pop < -8)) return 0;//负数同理
rev = rev *10 + pop;
}
return rev;
}
复杂度分析
时间复杂度: O ( log ( x ) ) O(\log(x)) O(log(x)),x中大约有$ \log_{10}(x)$位数字。
空间复杂度: O ( 1 ) O(1) O(1)。