探索回文数:三种方法解析自然数的对称之美
题目描述
给你一个整数 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;
分析
- 通过toString() 方法将数值类型num转换为字符串类型str
- 通过split('') 将该字符串转换为数组类型
- 通过reverse() 将该数组反过来
- 通过join('') 将数组转换为字符串
- 与原来的字符串进行对比,若相等,则返回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));
分析
- 通过toString() 方法将数值类型num转换为字符串类型str
- 通过str.length获取该字符串的长度len
- 通过遍历比较str[i](首字符)和str[len-1-i](尾字符)是否相等
- 如果存在不相等的,则返回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));
分析
- 通过toString() 方法将数值类型num转换为字符串类型str
- 设置left = 0, right = str.length - 1
- 通过while (str[left] == str[right]) 进行比较,left++;right--;
- 如果left >= right,返回true,反之则返回false
结语
这三种方法有没有get到呢~
转载自:https://juejin.cn/post/7362506905673220111