Вам нужно начинать l oop с индекса 0
, а не 1
.
Вы не должны возвращать true, как только найдете совпадение, потому что позже могут быть несоответствия. Вместо этого верните true, если вы дойдете до конца l oop, не обнаружив несоответствия.
Ваш расчет b
неверен, это должно быть number - i - 1
, а не number - i + 1
. Например, если длина строки равна 6, вы должны сравнить элемент 0 с 5, 1 с 4 и 2 с 3.
Нет необходимости проверять пустую строку. Это палиндром, и l oop правильно его обнаружит (l oop немедленно остановится, поэтому он упадет до return true
).
function palindrome(str) {
const palia = str.replace(/[\W_]/g, "").toLowerCase();
const number = palia.length;
console.log(number);
var num1 = number / 2;
num1 = Math.floor(num1);
console.log(num1);
for (var i = 0; i < num1; i++) {
var b = number - i - 1;
console.log(b);
if (palia[i] == palia[b]) {
console.log("True");
} else {
console.log("False");
return false;
}
}
return true;
};
console.log(palindrome("eye"));
console.log(palindrome("abcdefg"));
console.log(palindrome("abcdeedcba"));