回文字符串是一个正读和反读都一样的字符串,比如“abcba”或者“noon”等等就是回文字符串。
函数首先将输入字符串转换为小写,并移除所有非字母数字的字符。
反转字符串法:
function isPalina(str) {
if (Object.prototype.toString.call(str) !== '[object String]') {
return false;
}
str = str.toLowerCase().replace(/[\W_]/g, '');
return str === str.split('').reverse().join('');
}
双指针法:
function isPalina(str) {
if (Object.prototype.toString.call(str) !== '[object String]') {
return false;
}
str = str.toLowerCase().replace(/[\W_]/g, '');
var len = str.length;
for (var i = 0; i < len / 2; i++) {
if (str[i] != str[len - 1 - i]) {
return false;
}
}
return true;
}
示例使用:
console.log(isPalina('abcba'));//true
console.log(isPalina('noon'));//true
console.log(isPalina('noo'));//false
1:反转字符串并与原字符串比较,如果完全相同,则该字符串是回文字符串。
2:使用双指针法。设置两个指针,一个指向字符串的头部,一个指向字符串的尾部。比较两个指针指向的字符是否相同,如果不同,则该字符串不是回文字符串;如果相同,则将两个指针向中间移动一位,继续比较,直到两个指针相遇或指向相邻位置为止。如果所有的比较都是相同的,则该字符串是回文字符串。