likes
comments
collection
share

探索回文数:三种方法解析自然数的对称之美

作者站长头像
站长
· 阅读数 24

题目描述

给你一个整数 x ,如果 x 是一个回文整数,返回true;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

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

注意

  • xxx.split('') 字符串-->数组
  • xxx.join('') 数组-->字符串 (xxx..join()默认情况下分隔符为逗号)
  • xxx.toString() 数值-->字符串
  • 在js中不存在两个相等的对象,所以通过字符串进行比较

第一种

代码

let str= 'ababac';

function isPalindrome(num) {
let str = num.toString();
if(str === str.split('').reverse().join('')){//在js中不存在两个相等的对象
    return true;
}
else{
    return false;
}
}

console.log(isPalindrome(str));
return str === str.split('').reverse().join('')?true:false;

分析

  1. 通过toString() 方法将数值类型num转换为字符串类型str
  2. 通过split('') 将该字符串转换为数组类型
  3. 通过reverse() 将该数组反过来
  4. 通过join('')数组转换为字符串
  5. 与原来的字符串进行对比,若相等,则返回true,反之,则返回false。

第二种

代码

let str= 'ababac';

function isPalindrome(num) {
let str = num.toString();
const len = str.length;

for(let i = 0; i < len; i++) {
  if(str[i] !== str[len - 1 - i]){
    return false;
  }
}
return true;
};

console.log(isPalindrome(str));

分析

  1. 通过toString() 方法将数值类型num转换为字符串类型str
  2. 通过str.length获取该字符串的长度len
  3. 通过遍历比较str[i](首字符)和str[len-1-i](尾字符)是否相等
  4. 如果存在不相等的,则返回false,反之,则返回true

第三种

代码

let str= 'ababac';

var isPalindrome = function (num) {
    var str = num.toString()
    var left = 0, right = str.length - 1;
    while (str[left] == str[right]) {
        left++;
        right--;
        if (left >= right) {
            return true;
        }
    }
    return false;
};

console.log(isPalindrome(str));

分析

  1. 通过toString() 方法将数值类型num转换为字符串类型str
  2. 设置left = 0, right = str.length - 1
  3. 通过while (str[left] == str[right]) 进行比较,left++;right--;
  4. 如果left >= right,返回true,反之则返回false

结语

这三种方法有没有get到呢~

探索回文数:三种方法解析自然数的对称之美

转载自:https://juejin.cn/post/7362506905673220111
评论
请登录