function palindrome(str) {
var newStr1 = str.toLowerCase();
var newStr = newStr1.replace(speSym, "" );
if (newStr.length % 2 != 0){
for(var i = 0; i <= (newStr.length - 1) / 2; i ++){
if(newStr[i] === newStr[newStr.length - (i + 1)]){
return true;
}
else{
return false;
}
}
}
if(newStr.length % 2 == 0){
for(var j = 0; j <= (newStr.length - 2) / 2; j ++){
if(newStr[j + 1] === newStr[newStr.length - (j + 1)]){
return true;
}
else{
return false;
}
}
}
}
Добавление к вашему условному выражению (newStr[j + 1]
), кажется, дает вам функциональность, которую вы ищете. Похоже, вам не хватало сравнения отдельной буквы, что вызывало некоторую икоту, когда длина слова была одинаковой. Это должно сработать.
Хотя я обычно не публикую другие решения, как новый программист (я по-прежнему остаюсь), наблюдение за работой других людей мне очень помогает. В этом случае обратный l oop идеально подходит для таких палиндромов:
function palindrome(word){
let reverseWord = []
for(let i = word.length - 1; i >= 0; i--){
reverseWord.push(word[i])
}
return word === reverseWord.join("") ? true : false
}
console.log(palindrome("almostomla"))