Skip to content

Latest commit

 

History

History
54 lines (51 loc) · 1.19 KB

009.回文字.md

File metadata and controls

54 lines (51 loc) · 1.19 KB

题目描述

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例

输入: 121
输出: true

输入: -121
输出: false

思路

  • 将整数转化为字符串,然后从两端向中间遍历并比较是否相等
  • 不转为字符串,将整数反转,反转到一半的时候判断左右两段是否相等。该方法性能更优

解题代码

/**
 * 不转为字符串形式
 * @param  {number} x
 * @return {boolean}
 */
let isPalindrome = function(x) {
    if (x < 0 || (x % 10 === 0 && x !== 0)) {
        return false;
    }
    let right = 0;
    while (x > right) {
        right = right * 10 + x % 10;
        x = parseInt(x / 10);
    }
    return x === right || x === parseInt(right / 10);
};

/**
 * 转为字符串形式
 * @param  {number} x
 * @return {boolean}
 */
let isPalindrome = function(x) {
    if (x < 0) {
        return false;
    }
    if (x === 0) {
        return true;
    }
    x = x + '';
    for (let i = 0, l = x.length / 2 - 1; i <= l; i++) {
        if (x[i] !== x[x.length - i - 1]) {
            return false;   
        }
    }
    return true;
};