我的代码:
//必须要分离出每一位,而这个只能通过除10
//如果是负数,那么乘以-1变成正数处理,之后再乘-1回去即可
//所以现在考虑正数情况就可以了
int reverse(long num)
{
bool sig = false;
if (num >= INT_MAX || num <= INT_MIN)
return 0;
if (num < 0)
{
num = num * -1;
sig = true;
}
long long result = 0;
vector<int> arr;
int loopTime = 0;
if (num < 10)
{
if (sig)
num *= -1;
return num;
}
if (num >= 10)
{
while (num >= 10)
{
int x = num % 10;
num = num / 10;
arr.push_back(x);
loopTime++;
}
arr.push_back(num);
}
//凑回去
for (int i = loopTime; i >= 0; i--)
{
int j = loopTime - i;
result += arr[j] * pow(10,i);
}
if (sig)
result *= -1;
if (result > INT_MAX || result < INT_MIN)
return 0;
return result;
}
学到新的东西:long long 类型的使用,如果我把result定义成int的话,后面对大数(INT_MAX,INT_MIN)的测试就会出现over flow的问题。
long long本质上还是整型,只不过是一种超长的整型。
int型:32位整型,取值范围为-2^31 ~ (2^31 - 1) . long:在32位系统是32位整型,取值范围为-2^31 ~ (2^31 - 1);在64位系统是64位整型,取值范围为-2^63 ~ (2^63 - 1)
long long:是64位的整型,取值范围为-2^63 ~ (2^63 - 1)