首页 > 代码库 > 【Leet Code】Reverse Integer——“%”你真的懂吗?
【Leet Code】Reverse Integer——“%”你真的懂吗?
Reverse Integer
Total Accepted: 27372 Total Submissions: 68133My SubmissionsReverse 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)
注意细节,说不定某天你就变成大牛了。
【Leet Code】Reverse Integer——“%”你真的懂吗?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。