Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="simple function to check if phrase is is a palindrome">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
/**
 * Design an function that, given a string, returns true if the string is a palindrome and false if it is not.
 * Conditions:
 * 1. The string may contain spaces and punctuation, but they are not considered when detecting palindromeness.  
 *    Just ignore them.
 * 2. The string may contain numbers, but must contain at least one letter.
 * 3. Consider all alphanumeric characters. The string must be the same backwards as it is normally.
 * 4. When developing your algorithm, try to take performance into account.
 */
function isPalindrome(phrase = '') {
  // must contain at least one letter.
  if (!/[A-Za-z]/i.test(phrase)) return false;
  
  const sanitized = phrase.replace(/\W/g, '') // strip spaces and punctuation
                          .toLowerCase();     // normalize
  const reverse = [...sanitized]              // break letters into array
                      .reverse()              // reverse letters
                      .join('');              // put it back into string
  return sanitized === reverse;
}
console.clear();
console.log(isPalindrome(Math.random().toString(16)))
console.log(isPalindrome(Date.now()))
console.log(isPalindrome(1))
console.log(isPalindrome('1'))
console.log(isPalindrome('bob!'))
console.log(isPalindrome('racecar'))
console.log(isPalindrome('Bob1!'))
console.log(isPalindrome('1Bob1!'))
console.log(isPalindrome('!tattarrattat!'))
console.log(isPalindrome('saippuakivikauppias'))
console.log(isPalindrome('"A man, a plan, a canal. Panama'))
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
theprivilegespro
0viewers