Sabin Howard
Sabin Howard

Reputation: 51

FreeCodeCamp: checking for palindromes

This is my first question, so I apologize if this isn't formatted correctly or placed in the proper area.

I just completed the FreeCodeCamp checking for palindromes challenge. I can't help but think my solution was very inelegant.

function palindrome(str) {
  var cleanString = str.replace(/[^A-Za-z0-9]/g, '');
  var lowerCleanString = cleanString.toLowerCase();
  var lowerArr = lowerCleanString.split('');
  var reverseArr = lowerArr.reverse();
  var joinedArr = reverseArr.join('');
  if (joinedArr === lowerCleanString) {
    return true;
  }
  // Good luck!
  else {
   return false;
  }
}

I know it worked, but is it possible to do some of these steps together or in a cleaner way?

Upvotes: 0

Views: 1256

Answers (3)

Rustin McClure
Rustin McClure

Reputation: 11

Wow, I really like the answers comparing the string to a string.split('').reverse().join('') version of itself. I didn't think about that. Forgot about the .reverse() function. I ended up processing the string and splitting it out into an array and then using a double counter for the loop to compare the first and last items in the array. Was kinda fun to learn how to do that, but I like the .reverse() function use better.

In case someone is curious about the for loop I used ...

for(let i = 0, j = arr.length-1; i < j; i++, j--) {  
  if (arr[i] !== arr[j]) {
    return false;
  }
}

Upvotes: 1

Paul.A
Paul.A

Reputation: 11

function palindrome(str) {
    var newstr = str.replace(/[\W_]/g,'').toLowerCase();  

    if(newstr === newstr.split('').reverse().join('')){
        return true;
    }
    return false;
}

palindrome("five|\_/|four");

You can use many methods in one row like I've used them .It's more simple :) Good luck

Upvotes: 1

Svekke
Svekke

Reputation: 1530

Simple function to check for palindromes

function checkPalindrome(palindrome) {
return palindrome == palindrome.split('').reverse().join('');
}

Upvotes: 2

Related Questions