LeetCode(JavaScript实现)——回文数


文章目录

  • 1、题目
  • 2、题解
    • 2.1、将整数转换为字符串解法
      • 实现方法一
      • 实现方法二:
【LeetCode(JavaScript实现)——回文数】
1、题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1: 输入: 121 输出: true示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。

进阶:
你能不将整数转为字符串来解决这个问题吗?
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
2、题解 2.1、将整数转换为字符串解法 实现方法一
解题思路:
  1. 如果输入的整数 < 0,则返回 false
  2. 如果输入的整数 == 0,则返回 true
  3. 如果输入的整数 >0 且 能被 10 整除,则返回 false;
    否则,把输入的整数转换为字符串 --> 转换为数组 --> 数组反转 --> 转换为字符串 --> 转换为整数,此时如果和原先的值相等则返回 true;不相等则返回 false。
具体代码实现如下所示:
/** * @param {number} x 整数 * @param {boolean} true -- 表示输入的整数是回文数;否则为 false */ function isPalidrome(x) { if (x < 0) return false; if (x == 0) return false; return x % 10 == 0 ? false : x == Number(*x.toString().split('').reverse().join('')); }

实现方法二:
解题思路:
  1. 把整型转换成字符串
  2. 使用 for 循环,比较字符串索引为 0 和 length -1 的元素是否相等?比较索引为 1 和 length - 2 的元素是否相等?…比较索引为 Math.floor(length / 2) 和 length - 1 - Math.floor(length / 2) 的元素是否相等?如果有一个比较结果不相等则返回 false,否则返回 true。
    具体代码实现如下所示:
/** * @param {number} x 整数 * @param {boolean} true -- 表示输入的整数是回文数;否则为 false */ function isPalidrome(x) { if (x < 0) return false; if (x == 0) return true; if (x % 10 == 0) return false; let xStr = x.toString(); let len = Math.floor(x.xStr.length / 2); for (let i = 0; i < len; ++i) { if (xStr[i] != xStr[len - 1 - i]) return false; } return true; }

    推荐阅读