Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
Solution:
class Solution {
public:
int reverse(int x) {
//将int转为string
int n = x;
char c[256];
string s;
sprintf(c, "%d", n);
s = c;
//以string的形式设定int的边界
string a = "2147483647";
char ach[256];
strcpy(ach, a.c_str());
string b = "-2147483648";
char bch[256];
strcpy(bch, b.c_str());
//判定是否越界
if (s[0] != '-' && strcmp(c, ach) > 0 && s.size() >= a.size()) return 0;
if (s[0] == '-' && strcmp(c, bch) > 0 && s.size() >= b.size()) return 0;
//倒置string
string k = s;
if (s[0] == '-')
for (int i = 1; i < s.size(); i++) s[i] = k[s.size() - i];
else for (int i = 0; i < s.size(); i++) s[i] = k[s.size() - 1 - i];
strcpy(c, s.c_str());
//判定是否越界
if (s[0] != '-' && strcmp(c, ach) > 0 && s.size() >= a.size()) return 0;
if (s[0] == '-' && strcmp(c, bch) > 0 && s.size() >= b.size()) return 0;
//将string转为int并返回值
n = atoi(c);
return n;
}
};