第一天上课,数据库老师说对于计算机系的学生,凡是在课本上学到的专业知识都是过时的。深以为然,感觉大学两年半真的不知道学了什么,为未来感到担忧,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<=9 && x>=-9) return x; int MAX = INT_MAX/10; int MIN = INT_MIN/10; int result = 0; while(x != 0){ if ( result>MAX || result<MIN||(x > 0 && INT_MAX-x%10<result*10)|| (x<0 && INT_MIN-x%10>result*10) ) return 0; result = result*10 + x%10; x=x/10; } return result; } };
本来想把result设置成long的,但是我的编译器int和long占的字节一样,所以就只能用这样个笨方法来判断,就当是学习了。但是leetcode的编译器int和long不是占相同字节的。