check if string is a palindrome
built-in methods
[ regex | replace | split | reverse | join | toLowerCase ]

Check if string is a palindrome

Write a function that takes a string and checks whether it is a palindrome or not. Return true if the given string is a palindrome, otherwise return false.


Palindrome

A Palindrome is a word, phrase, name, or number that reads the same forward or backward.

Palindromes do not account for punctuation, symbols, whitespace or capitalization.

Alphanumeric characters include letters and numbers. All non-alphanumeric characters will be ignored.


Example ...

Enter a string ...

"Kayak" → string to be checked

The function returns true → string is a palindrome, the string reads the same forward as backward.

Enter a string ...

"Kayok" → string to be checked

The function returns false → string is not a palindrome, the string does not read the same forward as backward.

Strings are a sequence of zero or more characters written inside quotes used to represent text.

Strings may consist of letters, numbers, symbols, words, or sentences.

Strings are immutable, they cannot be changed.

Each character in a string has an index.

The first character will be index 0 the second character will be index 1 and so on.

There are two ways to access an individual character in a string.

charAt() method

const str1 = "abc"; string

str1.charAt(0); character at index 0 → "a"

str1.charAt(1); character at index 1 → "b"

str1.charAt(2); character at index 2 → "c"

str1.charAt(3); character at index 3 → "" index not found

Alternatively use at() or slice() methods

bracket notation []

const str2 = "abc"; string

str2[0]; character at index 0 → "a"

str2[1]; character at index 1 → "b"

str2[2]; character at index 2 → "c"

str2[3]; character at index 3 → undefined index not found


Arrays are used to store multiple values in a single variable.

Each value is called an element, and each element has a numeric position in the array, known as its index.

Arrays are zero-indexed, meaning the first element is at index 0, the second at index 1, and so on.

Arrays can contain any data type, including numbers, strings, and objects.

const arr1 = [2, 4, 6]; array

arr1[0]; element at index 0 → 2

arr1[1]; element at index 1 → 4

arr1[2]; element at index 2 → 6

arr1[3]; element at index 3 → undefined index not found


Check if a string is a palindrome using ↴

Regular Expression → patterns used to match character combinations in strings.

replace() method → returns a new string with the value(s) replaced.

toLowerCase() method → returns the value of the string converted to lower case.

split() method → splits a string into an array of substrings.

reverse() method → reverses the order of the elements in an array.

join() method → returns an array as a string.


Regular expressions are patterns used to match character combinations in strings.

The Regular Expression /[^A-Za-z0-9]/g defines a regular expression that matches any character that is NOT an upper case or lower case letter or a digit.

^ caret symbol at the beginning of the square brackets, negates the character set.

[^A-Z] matches anything that is NOT enclosed between A and Z

[^a-z] matches anything that is NOT enclosed between a and z

[^0-9] matches anything that is NOT enclosed between 0 and 9

/g flag indicates that the search should be global, meaning it will find all occurrences.


replace() method searches a string for a value or a regular expression and returns a new string with the value replaced.

If pattern is a string, only the first occurrence will be replaced.

syntax

string.replace(pattern, replacement)

const str3 = "hello world";

str3.replace("hello", "HELLO"); replace "hello" with "HELLO"

returns ↴

"HELLO world"

const str4 = "ABCDEF";

str4.replace("B", ""); replace "B" with "" empty string

returns ↴

"ACDEF""B" removed from string


toLowerCase() method converts all letters to lower case. The original string is unchanged.

const str5 = "hELlo wORLd";

str5.toLowerCase(); returns ↴

"hello world" → lower case


split() method splits a string into an array of substrings based on a specified separator (delimiter). The original string is unchanged.

("") separator → string is split between each character.

(" ") separator → string is split at each space character, resulting in an array of words.

const str6 = "Hello"; → string

str6.split(""); returns ↴

["H", "e", "l", "l", "o"] → array

const str7 = "hello world"; → string

str7.split(" "); returns ↴

["hello", "world"] → array


reverse() method reverses the order of the elements in an array.

const arr2 = ["H", "e", "l", "l", "o"]; array

arr2.reverse(); returns ↴

["o", "l", "l", "e", "H"] → array


join() method joins all elements of an array into a single string with a specified separator between each element. The original array is unchanged.

("") separator → returns a string joined with no spaces between each character.

(" ") separator → returns string joined with a single space between each element.

const arr3 = ["H", "e", "l", "l", "o"]; array

arr3.join(""); returns ↴

"Hello" → string

const arr4 = ["Hello", "World"]; array

arr4.join(" "); returns ↴

"Hello World" → string


Chaining these 3 built-in functions together to reverse a string ↴

const str8 = "Hello"; → string to be reversed

str8.split("").reverse().join(""); returns ↴

"olleH" → string


Initialize a variable to hold the string to check for a Palindrome.

const string1 = "Kayak"; → user input


Define a function palindrome to check if a string is a Palindrome.

function palindrome(str) {}

The function takes a string as input str and returns true if the given string is a palindrome, otherwise returns false.

Use a regular expression to match non-alphanumeric characters.

const regEx = /[^A-Za-z0-9]/g regEx

Remove non-alphanumeric characters and convert string to lower case.

const cleanedStr = str.replace(regEx, "").toLowerCase() cleanedStr

Convert the cleaned string to an array, reverse its elements and return back as a string.

const reversedStr = cleanedStr.split("").reverse().join("") reversedStr

Compare the reversed string with the original cleaned string.

Check if reversedStr is strictly equal to cleanedStr

return reversedStr === cleanedStr

If the comparison function returns true, the string is a palindrome

If the comparison function returns false, the string is not a palindrome


Call the function with ↴

palindrome(string1);


Check if string is a palindrome.

const string1 = "Kayak";

function palindrome(str) {

const regEx = /[^A-Za-z0-9]/g;

const cleanedStr = str.replace(regEx, "").toLowerCase();

const reversedStr = cleanedStr.split("").reverse().join("");

return reversedStr === cleanedStr;

}

call function

palindrome(string1); returns ↴

true


Alternative regular expression pattern ↴

/[^A-Za-z0-9]/g same as ↴

/[^a-z0-9]/gi case-insensitive


Valid Palindromes ↴

A man, a plan, a canal. Panama

Never odd or even

Pull up if I pull up

Stressed desserts

Evil, olive!

Race car

Radar

Kayak

Check for palindrome