C++ leetcode::Reverse Integer

第一天上课,数据库老师说对于计算机系的学生,凡是在课本上学到的专业知识都是过时的。深以为然,感觉大学两年半真的不知道学了什么,为未来感到担忧,C++也不敢说是精通,入门还差不多。最近丧的不行,不管怎么样,每天还是要进步一点点。

题目:

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321

感觉不难,写了才发现自己没考虑溢出的问题,为判断溢出折腾了好久,心好累,提交之后23ms,击败20%。什么时候才能击败100%呢?

class Solution {
public:
int reverse(int x) { if (x<= && x>=-)
return x;
int MAX = INT_MAX/;
int MIN = INT_MIN/;
int result = ;
while(x != ){
if ( result>MAX || result<MIN||(x > && INT_MAX-x%<result*)|| (x< && INT_MIN-x%>result*) )
return ;
result = result* + x%;
x=x/;
}
return result;
}
};

本来想把result设置成long的,但是我的编译器int和long占的字节一样,所以就只能用这样个笨方法来判断,就当是学习了。但是leetcode的编译器int和long不是占相同字节的。

上一篇:按装 autoconf 出现 需要安装m4-1.4.16.tar.gz的错误


下一篇:BZOJ 3884: 上帝与集合的正确用法 [欧拉降幂]