/*
* 算法思想:
* 先将给定的值转换为正数,反转这个正数,再根据之前的符号返回相应的结果
*
*
*/
int get_len(char *s){
int i=0;
while(*s != '\0'){
s++;
i++;
}
return i;
}
int get_num(char *s){
int j = get_len(s) - 1;
int num = 0;
while(j >= 0){
/* 考虑溢出大的情况,若溢出直接返回0 */
if(num > INT_MAX/10){
return 0;
}
num *= 10;
num += s[j]-'0';
j--;
}
return num;
}
int reverse(int y){
char num[100];
int flag = 0;
unsigned int x;
if(y == INT_MIN){
/* 当y为最大的INT值时,其相反数int是放不下的,因此可以用unsigned int放下,为INT_MAX+1 */
flag = 1;
x = INT_MAX + 1;
}
if(y < 0 && y!= INT_MIN){
flag = 1;
x = (-y);
}else{
x = y;
}
sprintf(num, "%d", x);
return flag ? -get_num(num) : get_num(num);
}
LeetCode-7-整数反转-C语言
猜你喜欢
转载自blog.csdn.net/weixin_36094222/article/details/90116288
今日推荐
周排行