首页 > 代码库 > leetcode第七题--Reverse Integer
leetcode第七题--Reverse Integer
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继续。
leetcode第七题--Reverse Integer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。