判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
输入: 121
输出: true
输入: -121
输出: false
- 将整数转化为字符串,然后从两端向中间遍历并比较是否相等
- 不转为字符串,将整数反转,反转到一半的时候判断左右两段是否相等。该方法性能更优。
/**
* 不转为字符串形式
* @param {number} x
* @return {boolean}
*/
let isPalindrome = function(x) {
if (x < 0 || (x % 10 === 0 && x !== 0)) {
return false;
}
let right = 0;
while (x > right) {
right = right * 10 + x % 10;
x = parseInt(x / 10);
}
return x === right || x === parseInt(right / 10);
};
/**
* 转为字符串形式
* @param {number} x
* @return {boolean}
*/
let isPalindrome = function(x) {
if (x < 0) {
return false;
}
if (x === 0) {
return true;
}
x = x + '';
for (let i = 0, l = x.length / 2 - 1; i <= l; i++) {
if (x[i] !== x[x.length - i - 1]) {
return false;
}
}
return true;
};