45.判断是否是回文字符串
2022-02-05 本文已影响0人
wo不是黄蓉
day1:js基础->算法。
回文数
思路:使用双指针,双向移动。
- abcba到中间位置该怎么判断?
定义两个指针,start和end,当start = 0,end=len-1;start=end时往下进行比较,否则断定不是回文字符串。 - 区分大小写时怎么判断?
使用charCodeAt
方法使用编码进行判断。
function isPalindromic(str) {
let len = str.length;
//定义头指针和尾指针
let i = 0,
j = len - 1;
while (i < j) {
if (str[i].charCodeAt(0) != str[j].charCodeAt(0)) {
return false;
} else {
i++;
j--;
}
//当i>j的时候也return
}
return true;
}
console.log(isPalindromic(str));
2022.2.10 补充
考虑:反转数字的一半,如果和前面的相等则相等
所有的负数全部返回false
也可以使用回文字符串的方法,但是需要创建新的字符串变量,内存消耗
相同的字符串也使用每次截取一半的方法,对后面的字符串进行反转之后和前面的进行对比,相同返回true
,不相等返回false
function isPalindromic1(str) {
//使用字符串截取方法
let newStr = str.slice(Math.floor(str.length / 2));
let str1 = str.slice(0, Math.ceil(str.length / 2));
// console.log(len, newStr, str1, [...newStr].reverse().join(""));
if ([...newStr].reverse().join("") !== str1) {
return false;
}
return true;
}
console.log(isPalindromic1(str));