Reverse Integer
Total Accepted: 27372 Total
Submissions: 68133My Submissions
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
题目咋看起来很简单,其实,真的很简单:
class Solution { public: int reverse(int x) { int ret = 0; bool isNegative = false; if (x < 0) { isNegative = true; x = -x; } while (x) { ret = ret * 10 + x % 10; x /= 10; } return ret * (isNegative? -1 : 1); } };
看这个题目一眼,就大概知道怎么写了,不过在这里,我想有必要回顾一下取余“%”的基础知识:
7 % 2 = 1
7 % -2 = 1
-7 % 2 = -1
-7 % -2 = -1
所以,正数取余,永远是正数(或者0);负数也是同样的道理;0当然永远都是0啦。
因此,我们的程序可以再简单一点:
class Solution { public: int reverse(int x) { int ret = 0; while (x) { ret = ret * 10 + (x % 10); x /= 10; } return ret; } };
是不是很厉害,不过这当然不是我想出来的。(PS:这里都没有考虑都数值溢出的问题,不过任然可以AC)
注意细节,说不定某天你就变成大牛了。
时间: 2024-10-13 20:57:51