Próba zakończenia algorytmów na FreeCodecamp. W końcu znalazłem podejście, które działa, ale nadal nie rozumiem, dlaczego ta metoda nie działała dla wszystkich przypadków.

function palindrome(str) {
  var alphaNumericStr = str.replace(/\W/g,""); 
  var lowerCaseAlphaNumericString = alphaNumericStr.toLowerCase();  
  var arr = lowerCaseAlphaNumericString.split(""); 
  arr.reverse();                                   
  var reversedString = arr.join("");               

  if(str === reversedString){
    return true;
  } 
  return false;
 }

palindrome("race car");
0
Kevin Mangal 28 czerwiec 2017, 06:52

3 odpowiedzi

Najlepsza odpowiedź

Porównujesz ciąg, który został pozbawiony spacji i konwertowany na małe litery do oryginalnego ciągu. Zastąp swój warunkowy:

if(lowerCaseAlphaNumericString == reversedString){
    rethrn true;
}
return false;

Oto trochę refaktora, jeśli jesteś zainteresowany:

// ...
var reversedString = arr.join('');
return lowerCaseAlphaNumericString == reversedString;

próbny

0
wbadart 28 czerwiec 2017, 03:57

Może być kolejne podejście. W tym podejściu przypadki narożne są obsługiwane oddzielnie.

function check_Palindrome(input_str){
    var astr = input_str.toLowerCase().replace(/\W/g,'');
    var acount = 0;
    if(astr==="") {
        console.log("Not Palindrome.");
        return false;
    }
    if ((astr.length) % 2 === 0) {
        acount = (astr.length) / 2;
    } else {
        if (astr.length === 1) {
            console.log("Palindrome.");
            return true;
        } else {
            acount = (astr.length - 1) / 2;
        }
    }
   for (var x = 0; x < acount; x++) {
        if (astr[x] != astr.slice(-1-x)[0]) {
            console.log("Not Palindrome.");
            return false;
        }
    }
    console.log("Palindrome.");
    return true;
}
0
Ashish Shukla 28 czerwiec 2017, 05:10

Tutaj idziesz źle if(str === reversedString)

Spróbuj tego:

    if(lowerCaseAlphaNumericString === reversedString) {
        return true;
    } 
    return false;
}
0
Roshan Nalawade 28 czerwiec 2017, 04:08