1function palindrome(str) {
2
3 var len = str.length;
4 var mid = Math.floor(len/2);
5
6 for ( var i = 0; i < mid; i++ ) {
7 if (str[i] !== str[len - 1 - i]) {
8 return false;
9 }
10 }
11
12 return true;
13}
14
1function palindrome(str) {
2 var re = /[\W_]/g;
3 var lowRegStr = str.toLowerCase().replace(re, '');
4 var reverseStr = lowRegStr.split('').reverse().join('');
5 return reverseStr === lowRegStr;
6}
7palindrome("A man, a plan, a canal. Panama");
1function palindrome(str) {
2 var re = /[^A-Za-z0-9]/g;
3 str = str.toLowerCase().replace(re, '');
4 var len = str.length;
5 for (var i = 0; i < len/2; i++) {
6 if (str[i] !== str[len - 1 - i]) {
7 return false;
8 }
9 }
10 return true;
11}
12palindrome("A man, a plan, a canal. Panama");
1const palindrome = (str) => {
2 var text = str.replace(/[.,'!?\- \"]/g, "")
3 return text.search(
4 new RegExp(
5 text
6 .split("")
7 .reverse()
8 .join(""),
9 "i"
10 )
11 ) !== -1;
12}
13
14//or
15function palindrome(str) {
16 let text = str.replace(/[.,'!?\- \"]/g, "").toUpperCase();
17 for (let i = 0; i > text.length/2; i++) {
18 if (text.charAt(i) !== text.charAt(text.length - 1 - i)) {
19 return false;
20 }
21 }
22 return true;
23}
24console.log(palindrome("Able was I, ere I saw elba.")); //logs 'true'
1function palindrome(str) {
2 // Step 1. The first part is the same as earlier
3 var re = /[^A-Za-z0-9]/g; // or var re = /[\W_]/g;
4 str = str.toLowerCase().replace(re, '');
5
6 // Step 2. Create the FOR loop
7 var len = str.length; // var len = "A man, a plan, a canal. Panama".length = 30
8
9 for (var i = 0; i < len/2; i++) {
10 if (str[i] !== str[len - 1 - i]) { // As long as the characters from each part match, the FOR loop will go on
11 return false; // When the characters don't match anymore, false is returned and we exit the FOR loop
12 }
13 /* Here len/2 = 15
14 For each iteration: i = ? i < len/2 i++ if(str[i] !== str[len - 1 - i])?
15 1st iteration: 0 yes 1 if(str[0] !== str[15 - 1 - 0])? => if("a" !== "a")? // false
16 2nd iteration: 1 yes 2 if(str[1] !== str[15 - 1 - 1])? => if("m" !== "m")? // false
17 3rd iteration: 2 yes 3 if(str[2] !== str[15 - 1 - 2])? => if("a" !== "a")? // false
18 4th iteration: 3 yes 4 if(str[3] !== str[15 - 1 - 3])? => if("n" !== "n")? // false
19 5th iteration: 4 yes 5 if(str[4] !== str[15 - 1 - 4])? => if("a" !== "a")? // false
20 6th iteration: 5 yes 6 if(str[5] !== str[15 - 1 - 5])? => if("p" !== "p")? // false
21 7th iteration: 6 yes 7 if(str[6] !== str[15 - 1 - 6])? => if("l" !== "l")? // false
22 8th iteration: 7 yes 8 if(str[7] !== str[15 - 1 - 7])? => if("a" !== "a")? // false
23 9th iteration: 8 yes 9 if(str[8] !== str[15 - 1 - 8])? => if("n" !== "n")? // false
24 10th iteration: 9 yes 10 if(str[9] !== str[15 - 1 - 9])? => if("a" !== "a")? // false
25 11th iteration: 10 yes 11 if(str[10] !== str[15 - 1 - 10])? => if("c" !== "c")? // false
26 12th iteration: 11 yes 12 if(str[11] !== str[15 - 1 - 11])? => if("a" !== "a")? // false
27 13th iteration: 12 yes 13 if(str[12] !== str[15 - 1 - 12])? => if("n" !== "n")? // false
28 14th iteration: 13 yes 14 if(str[13] !== str[15 - 1 - 13])? => if("a" !== "a")? // false
29 15th iteration: 14 yes 15 if(str[14] !== str[15 - 1 - 14])? => if("l" !== "l")? // false
30 16th iteration: 15 no
31 End of the FOR Loop*/
32 }
33 return true; // Both parts are strictly equal, it returns true => The string is a palindrome
34}
35
36palindrome("A man, a plan, a canal. Panama");
1function palindrome(str) {
2 var splitted = str.split("");
3 var reversed = splitted.reverse("");
4 var joined = reversed.join("");
5 return joined.toLowerCase().replace(/[^0-9a-z]/gi, '') == str.toLowerCase().replace(/[^0-9a-z]/gi, '')
6}
7