标签:style blog color io for strong sp div on
Problem:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
终于什么都没参考就一次Accept了。可能是这题比较简单,同时自己也进步了一点点,leetcode就是这样给我们增加信心的吧。
我是这样想的,利用除10和模10两个操作,将每个数字分离在vec中,然后相应的乘以10的倍数输出就行。如果这个数在-10与10之间直接返回就好。
代码如下:
class Solution { public: int reverse(int x) { if(x > -10 && x < 10) return x; int result = 0; vector<int> vec; int val = x % 10; int remain = x; while(!(val == 0 && remain ==0)) { vec.push_back(val); remain /= 10; val = remain % 10; } for ( vector<int>::size_type i = 0; i < vec.size(); i++) { result += vec[i] * pow(10, vec.size() - i - 1); } return result; } };
其中remain用来保存中间值。
奇怪的是我在codeblock上用试的话,用102为例子,那么输出是200,我发现codeblock上用cout<<vec[0] 输出是2 cout<<pow(10,vec.size() - 0 - 1)是100,这都没错,但是result = vec[0] * pow(10, vec.size() - 0 -1); 再cout<<result 就变成199了。然后再假设102中百位的1就成了200。
同样的测试代码,如下所示:它在vs中输出的是2,100,200没错。但是在codeblock中输出2,100,199。
int main() { vector<int> vec; vec.push_back(2);
int result; cout<<vec[0]<<endl; cout<<pow(10, vec.size() + 1)<<endl; result = vec[0] * pow(10, vec.size() + 1); cout<< result <<endl; return 0; }
难道不能再相信codeblock了?leetcode继续。
标签:style blog color io for strong sp div on
原文地址:http://www.cnblogs.com/higerzhang/p/4021060.html