почему строка "почтиомла" не выдает false как надо? - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь написать программу проверки пелиндрома. каждое второе слово было возвращено правильно, кроме этого c слова. Я проверял свой код снова и снова, но продолжаю понимать. Я здесь ошибся?

var speSym = /_|\./g;

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] == newStr[newStr.length - (j + 1)]){

        return true;

      }
      else{

        return false;
      }
    }
  }
}

console.log(palindrome("almostomla"));

1 Ответ

0 голосов
/ 17 июня 2020
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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...