Skip to content

反转数字 / revertNumber

题目描述

输入一个整数,返回反转后的数字。

输入 0 则返回 0。

负数反转后仍保留符号。

反转后,不保留高位的 0。

Example

javascript
Input: 123
Output: 321
javascript
Input: 0
Output: 0
javascript
Input: 120
Output: 21
javascript
Input: -123
Output: -321

Code

javascript
function revertNumber(n) {
  if (n === 0) return 0;
  let isNegative = false;
  let result = 0;
  if (n < 0) {
    isNegative = true;
    n = -n;
  }
  while (n > 0) {
    result = result * 10 + (n % 10);
    // 因为 JavaScript 中的除法会保留小数,因此取整
    // 这里的结果永远 > 0,因此 ceil 或者 floor 都可以使用
    n = Math.floor(n / 10);
  }
  return isNegative ? -result : result;
}

Test Cases

javascript
const { revertNumber } = require('../docs/algo/number/revert');
describe('revertNumber', () => {
  test('revert 123', () => {
    expect(revertNumber(123)).toBe(321);
  });
  test('revert 0', () => {
    expect(revertNumber(0)).toBe(0);
  });
  test('revert -123', () => {
    expect(revertNumber(-123)).toBe(-321);
  });
  test('revert 120', () => {
    expect(revertNumber(120)).toBe(21);
  });
});