原地地址:https://leetcode-cn.com/problems/palindrome-number/

一、题目描述

这个题还是很简单的,并且我在之前的 LeetCode JavaScript 解题 — 最长回文字串 这个题目中已经说了这个方法了,一开始因为采用暴力解法,需要判断是否是回文串。不过导致超时和内存爆掉,后面还是使用动态规划解题了。

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

二、示例

示例1

  • 输入: 121
  • 输出: true

示例 2

  • 输入: -121
  • 输出: false

解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3

  • 输入: 10
  • 输出: false

解释: 从右向左读, 为 01 。因此它不是一个回文数。

三、JavaScript 解题

思路其实很简单,回文串的定义就是这种 aba 或者 abba 形式的对称,无非有两种不同的对称形式,一种是中间有一个字符,一种是中间没有字符,也就是我认为的奇数长度偶数长度

代码已经在之前文章解释过了,就不再过多解释了

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
    return checkIsPalindromic(x.toString());
};

function checkIsPalindromic(s) {
    let len = s.length;
    if (len === 1) return true;
    let index = Math.floor(len / 2);
    index = index % 2 !== 0 ? index : index - 1;
    for (let i = 0, j = len - 1; i < index, j >= index; i++ , j--) {
        if (s[i] !== s[j]) {
            return false;
        }
    }
    return true;
}

四、结果

2.jpg