# 题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例一🌰:
输入: 123
输出: 321
@前端进阶之旅: 代码已经复制到剪贴板
示例二🌰:
输入: -123
输出: -321
@前端进阶之旅: 代码已经复制到剪贴板
示例三🌰:
输入: 1200
输出: 21
@前端进阶之旅: 代码已经复制到剪贴板
注意⚠️
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
# 解题思路
解法一
将输入的数转换为数组, 然后利用数组的reverse()方法反转,之后在判断反转后数的大小.
- 考虑输入的数为0, 或者小于10的情况;
- 若是输入的数为负数,则注意要将
-号取出再进行反转; - 反转完之后记得去除反转后的数前面有
0的项; - 反转完之后记得要将负号添加回去;
- 可以利用
Math.pow()来进行数的判断.
解法二
将输入的数从尾部开始向头部移.
- 利用
x % 10来获取一串数字中的个位数; - 利用
parseInt(x / 10)来获取一串数字中除了个位数的其它位数;
# Coding
解法一
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
if (!x) return 0;
x += '' // 将数字转为字符串
let array = x.split('')
let isNegative = false // 是否为负数
if (array.length === 1) return Number(array.join(''))
if (array[0] === '-') { // 或者 x < 0
isNegative = true
array.shift() // 去掉'-'号
}
array = array.reverse()
while (array[0] === '0') { // 去除反转后前面的0
array.shift()
}
if (isNegative) array.unshift(