int reverse(int x) { int flag = 1; if(x<0) {x *= (-1); flag = -1;} char str[20]; int len = 0; while(x){ str[len++] = '0' + x%10; x /= 10; } str[len] = '\0'; return flag * atoi(str); } //当测试案例为1534236469时,不能通过,原因是int(32bit)的范围为-2147483648(-2^31)~ 2147483647(2^31-1),当上述测试案例反转后,将超过范围,导致输出错误 //Accepted解决方法:翻转后超过范围时,返回0; int reverse(int x) { int flag = 1; if(x<0) {x *= (-1); flag = -1;} char str[11]; char s[11] = "2147483648"; int len = 0; while(x){ str[len++] = '0' + x%10; x /= 10; } str[len] = '\0'; if(len>=10 && strcmp(str, s)>0) return 0; //使用strcmp函数判断是否超过int范围 return flag * atoi(str); }