[路飞]_LeetCode题9回文数

147 阅读1分钟

题目描述

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

 

示例 1:

输入:x = 121 输出:true 示例 2:

输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3:

输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。 示例 4:

输入:x = -101 输出:false  

提示:

-231 <= x <= 231 - 1

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/pa… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解思路

  1. 负整数一定不是所谓的回文数。
  2. 正整数依次判断“首尾”是否相等,全部相等则是,否则不是。

题解代码

/*
 * @lc app=leetcode.cn id=9 lang=javascript
 *
 * [9] 回文数
 */

// @lc code=start
/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
  if (x < 0) return false;
  let medium = x.toString();
  //前半段取长度一半之前的
  let fHalf = medium.substring(0,medium.length/2);
  let sHalf = "";
  //偶数位数,后半段取长度一半之后的且反转
  //奇数位数,后半段取中间数(长度一半的数)后边的数且反转
  if (medium.length % 2 === 0) {
    sHalf = medium.substring(medium.length/2).split('').reverse().join('');
  }else{
    sHalf = medium.substring(medium.length/2 + 1).split('').reverse().join('');
  }
  //对位比较
  for (let i = 0; i < fHalf.length; i++) {
    if (fHalf.charAt(i) !== sHalf.charAt(i)) return false;
  }
  return true;
};
// @lc code=end