LeetCode_反转数字_代码思考

问题描述:
给定一个 32 位有符号整数,将整数中的数字进行反转。

示例 1:

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。

  • 问题分析:
    拿到这个问题时,思考一下,我们要对一个有符号的数字进行反转,我们要考虑的是我们处理的数字是有正负之分的,所以分析问题的时候不能遗漏了负数的情况。

  • 那好,到这里,我们假设现在有一个数字:123,我们要反转,那么是不是要把这个数字的各个位上的数字分别拿出来。对于拿出一个数字的各个位上的数,我们要记住一个经典的处理方式:

  • 第一步:int a1 = x%10 拿出x的余数。
    第二步: x = (x-a1)/10 去掉最后一位
    重复上两步,就能把x 的各个位上的数值取出。

  • 然后,我们考虑,此时我们已经可以拿出各个位上的数值了,那怎样把拿出来的单个数值合并为一个完整的数呢?这一步其实相对容易:算法就是将取出的数乘以相应的10的次方再相加就行。

  • 最后我们考虑一下,如果超出范围了,返回0即可。具体代码如下图所示:

LeetCode_反转数字_代码思考_第1张图片

  • 其实上述代码有些细节还是很有必要说明一下的。比如我们如何求一个数有几位呢?这里的技巧是将整数后面加上“”,这样整数就被转成字符串了,对于字符串我们可以用length();方法求得长度(码代码的时候记住length后面有括号)。

你可能感兴趣的:(Leetcode)