题目内容
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
解法一,我的解法
先将输入转换为字符串并处理为数组且倒转,如果倒转后的字符串等于倒转前,那么即可认为该数为回文数。
但这个方法特别容易想到,那么他的效率肯定不是最高的。最多人走的路,很大可能不是最顺畅的那条。
var isPalindrome = function(x) {
let returnVal = false
let val = String(x).split('').reverse()
let valCopy = String(x)
if (val.join('') === valCopy) {
return true
} else {
return false
}
};
在浏览各种leetcode相关仓库时,偶然翻到这个答案。虽然我们思路一样,但明显以下代码简洁得多,学习了。
var isPalindrome = function(x) {
return x.toString() == x.toString().split('').reverse().join('');
};
解法二,巧取法
观察回文数,会发现其有个特点即是对称,首尾的数字是一样的,倒数第一个数字和倒数第二个数字是一样的... 一旦发现对称位置的数字不一样即可判定为false。
var isPalindrome = function(x) {
if(x<0) return false;
let flag = true;
x = x.toString()
for(let i=0, len=x.length; i<len/2; i++){
if(x[i] !== x[len-1-i]){
flag = false;
break
}
}
return flag
};