我自己最先想的是转字符串做。。 我也不知道为什么这么想 然后是VS能跑 LEETCODE上跑出来结果不一样,可能编译器不同缘故吧,先贴自己的 看了网上的恍然大悟。。

int reverse(int x) {
string s = to_string(x);
string ans = "";
int k = 0;
if (s[0] == '-') {
k = 1;
ans += '-';
}
for (int i = s.size() - 1; i >= k; --i) {
ans += s[i];
}
int m = atoi(ans.c_str());
if (m == INT_MAX || m==INT_MIN)return 0;
return m;
}

以下是看了网上自己写的 就是求出各位置的数

int reverse(int x) {
long long ans = 0;
int imax = (1 << 31) - 1;
int imin = 0 - (1 << 31);
while (x) {
ans = ans * 10 + x % 10;
x /= 10;
}
if (ans >= imax || ans < imin)return 0;
else return (int)ans;
}