JavaScript:leetcode_9. 回文数

88 阅读1分钟

题目说明

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

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

例如,121 是回文,而 123 不是。  

示例 1:

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

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

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

提示:

-231 <= x <= 231 - 1  

进阶:你能不将整数转为字符串来解决这个问题吗?

解题思路一

  1. 首先想到的就是将整数转为字符串来解决,利用x.toString()方法
  2. 要先判断整数的正负,如果是负数,则直接返回false,如果是正数,在进行下一步判断。
  3. 判断是正数的先运用x.toString()方法,将整数转换成字符串,遍历字符串的前半部分,和后半部分对应位置作比较,如果对应位置的有一项不相等,就返回false
  4. 遍历完成后对应位置没有不相等的则返回true。

代码实现

var isPalindrome = function(x) {
    if(x >= 0) {
        let nums = x.toString();
        for(let i = 0;i < nums.length/2;i++){
            if(nums[i] !== nums[nums.length - i -1]){
                return false;
            }
        }
        return true;
    }else{
        return false;
    }
}

解题思路二

  1. 翻转字符串:先将数值型转为字符串型,再拆分为单字符数组,然后翻转数组,最后将数组拼接成字符串
  2. 将原字符串和翻转后的字符串进行比较即可

代码实现

var isPalindrome = function(x) {
    let nums = x.toString().split('').reverse().join('')
    if(x.toString() === nums){
        return true;
    }else{
        return false;
}