leetcode7 整数翻转(对于整数数位操作的简洁算法)
Posted jhjgarden
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode7 整数翻转(对于整数数位操作的简洁算法)相关的知识,希望对你有一定的参考价值。
【题目描述】
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
【题解】
颠倒正负存在新的数里,要从原来的数最后一位开始在新数里累加
即是 += x % 10
处理完第一个数,之后要处理第二位,也就是x % 100,如果加入循环,则循环条件设置为:
x / 10
对于返回的整型re,每一次放入一个新的数时,原来的数左移一位,也就是:
re * 10
对于溢出的判断我一开始的想法是直接让int溢出,溢出之后re值正负颠倒,此时只需要判断原本X的值正负与re不同即可
可是leetcode它报错!!!它不让我自然溢出!!!
好的我向平台低头
接下来就是把re设置成long int 判断是否大于2^31 - 1或者小于-2^31 + 1
1 int reverse(int x){ 2 long int re = 0; 3 for(; x; x /= 10) 4 re = re * 10 + x % 10; 5 if (re > 2147483647 || re < -2147483648) 6 return 0; 7 else 8 return re; 9 }
代码如上
执行结果:
通过
显示详情
执行用时 :0 ms, 在所有 C 提交中击败了100.00%的用户
内存消耗 :5.9 MB, 在所有 C 提交中击败了100.00%的用户
我是一个菜鸟程序员,我从最简单的简单题慢慢做起,它虽然简单,但我每一道都要做到最好
以上是关于leetcode7 整数翻转(对于整数数位操作的简洁算法)的主要内容,如果未能解决你的问题,请参考以下文章