一次性提交代码运行时间8ms,战胜100%的玩家!!哈哈哈,这一题很简单,但是如果不提前看看spoiler的话还是容易考虑不全。
注意两点即可,123000转化后前面的0要去掉;不能超出整形数据的最大范围。
最开始我不太清楚整形数据范围就自己计算。
int max = ~(unsigned int)0 / 2);//计算最大数
int min = -max - 1;//最小数
其实在limits.h头文件中有各种类型数据的范围。INT_MAX,INT_MIN。
一如既往贴一个AC代码。我是把各个位存在容器里,然后找出第一个不是0的数,按照数量级加起来,判断是否溢出
int reverse(int x)
{
if (x > INT_MAX || x < INT_MIN)
return 0;
vector<int> ivec;
int temp = x;
while (x != 0)
{
ivec.push_back(x % 10);
x /= 10;
}
int index = 0;
for (int i = 0; i < ivec.size(); ++i)
{
if (ivec[i] != 0)
{
index = i;
break;
}
}
double result = 0;//放在double里面
while (index != ivec.size())
{
result += ivec[index] * pow(10, ivec.size() - index - 1);
++index;
}
if (result > INT_MAX || result < INT_MIN) return 0;
return result;
}