skip to content

LeetCode
LeetCode 007 整数反转

常规解法

[解题]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)
  })
})