LeetCode刷题心得-整数反转

整数反转:
如果想得到一个32位整数x中的每一个数字,可以采用如下算法:
int pop = x % 10;
x /= 10;
这个算法的意思就是,先POP得到X除以10取余后的结果,然后X再往后退一位。例如X=123,则第一步POP=3,然后X变为12,第二步就是POP=2,X变为1,最后一步则POP=1,X=0.循环结束
通过循环,就可以弹出32位整数中的每一个数,但是需要一个容器去接纳。
假如想将整数X进行反转,可以采用如下算法:
temp = rev * 10 + pop;
rev = temp;
这个算法的意思就是,用TEMP去接收从POP中弹出来的数字,rev表示为结果,一开始rev=0,例如X=123,则第一步POP中弹出来的数字为3,则rev为3.第二步pop的结果为2,则rev的结果先3*10,然后+2得到32,最后一步rev就得到321了。整个程序结束。
最需要注意的是因为是32位整数,假如反转后超出边界就会出错,所以需要在求结果的前一步骤去判定是否越界,假如越界就return 0.否则继续运行。 判定条件为:
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;
图片来自LeetCode的解释

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页