12321
方法:
- 将数字先转成字符串,再变成数组,数组反转后再连接成字符串,比较两个字符串;
-
从后往前循环字符串,形成一个新的反转字符串,然后比较;
-
遍历一半的字符串,判断 x[i] !== x[x.length - i - 1] 左右两边的是否相等;
function f(s) {
return s === s.split('').reverse().join('');
}
4.将数字求模得到尾数,之后每次求模都在原数上添加(通过*10 + 尾数),得到一个反转数num
var isPalindrome = function(x) {
if ( x < 0 || (x !== 0 && x % 10 === 0)) {
return false
} else if (x >= 0 && x < 10) {
return true
}
const y = x
let num = 0
while(x !== 0) {
num = num * 10 + x % 10;
x = Math.floor(x / 10);
}
return y === num
};
5. 递归,比较头尾的字符是否相等
function isReserveSame(str) {
const len = str.length;
if(len == 1) return true;
return str[0] === str[len - 1] ? isReserveSame(str.slice(1, len-1)) : false;
}
var isPalindrome = function(s) {
const newS = s.replace(/\W|_/g, '').toLowerCase();
return isPal(newS, 0, newS.length-1);
};
function isPal(s,lp,rp){
if(lp>rp){
return true;
}
return s[lp] == s[rp] && isPal(s, lp+1, rp-1);
}