掘金团队号上线,助你 Offer 临门! 点击 查看详情
一、题目描述:
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
二、思路分析:
- 整数转换为字符串-->数组-->数组反转-->字符串 ,然后比较是否相等
- 参考整数反转的方法
三、AC 代码
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
return String(x) === String(x).split('').reverse().join('');
};
四、总结
-
当然不止一种方法,也看到很多方法实现,
-
可以利用整数反转的逻辑来实现
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
if(x < 0 || (!(x % 10) && x)) return false;
const num = x;
let result = 0;
while(x !== 0) {
result = result * 10 + x % 10;
x = (x / 10) | 0;
}
return (result | 0) === result ? result === num: 0;
};
当然了也看到别的方法,觉得可能有点繁琐,比如:
1、先算出数字总位数
2、每次比较首位和末尾
3、去掉首位和末尾继续比较
仅供学习参考