原题地址(简单)
此题虽不算太难,但涉及到了几个不常见的知识点。
知识点
1. c++负数取余
c++取余的符号取决于被除数,所以说 -6 % 4 == -2 , 6 % 4 == 2
2. c++int范围
int是32位,范围是 -2147483648 ~ +2147483647 ,也就是 -2^{31} ~ 2^{31} - 1
代码
class Solution {public:int reverse(int x) {int ans = 0;while(x) {if(ans <= 214748364 && ans >= -214748364)ans *= 10;else return 0;if((ans >= 0 && 2147483647 - ans >= x%10) || (ans < 0 && -2147483648 - ans <= x%10))ans += x % 10;else return 0;x /= 10;}return ans;}};
class Solution {public:int reverse(int x) {int rev = 0;while (x != 0) {int pop = x % 10;x /= 10;if (rev > INT_MAX/10 || (rev == INT_MAX / 10 && pop > 7)) return 0;if (rev < INT_MIN/10 || (rev == INT_MIN / 10 && pop < -8)) return 0;rev = rev * 10 + pop;}return rev;}};作者:LeetCode链接:https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-by-leetcode/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
