常规解法
[解题]LeetCode-007-整数反转.js
const reverse = num => {
let sign = num >= 0 ? 1 : -1
num = Math.abs(num)
let str = String(num)
let chars = Array.from(str)
const charsLen = chars.length
const reverseTime = Math.floor(charsLen / 2)
for (let index = 0; index < reverseTime; index++) {
let temp = chars[index]
chars[index] = chars[charsLen - 1 - index]
chars[charsLen - 1 - index] = temp
}
return Number(chars.join('')) * sign
}
module.exports = { reverse }
[测试]LeetCode-007-整数反转.test.js
const { reverse } = require('./LeetCode-007-整数反转')
describe('reverse', () => {
it('123 => 321', () => {
expect(reverse(123)).toBe(321)
})
it('-123 => -321', () => {
expect(reverse(-123)).toBe(-321)
})
it('120 => 21', () => {
expect(reverse(120)).toBe(21)
})
it('0 => 0', () => {
expect(reverse(0)).toBe(0)
})
})
使用数学方法进行优化
[解题]LeetCode-007-整数反转.js
const reverseV2 = num => {
let sign = num >= 0 ? 1 : -1
num = Math.abs(num)
let result = 0
while (num > 0) {
let remainder = num % 10
num = parseInt(num / 10)
result = result * 10 + remainder
}
return result * sign
}
module.exports = { reverseV2 }
[测试]LeetCode-007-整数反转.test.js
describe('reverseV2', () => {
it('123 => 321', () => {
expect(reverseV2(123)).toBe(321)
})
it('-123 => -321', () => {
expect(reverseV2(-123)).toBe(-321)
})
it('120 => 21', () => {
expect(reverseV2(120)).toBe(21)
})
it('0 => 0', () => {
expect(reverseV2(0)).toBe(0)
})
})