-
Notifications
You must be signed in to change notification settings - Fork 0
/
PalindromeChecker.js
44 lines (34 loc) · 1.84 KB
/
PalindromeChecker.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Palindrome Checker
// Return true if the given string is a palindrome. Otherwise, return false.
// A palindrome is a word or sentence that's spelled the same way both forward and backward, ignoring punctuation, case, and spacing.
// Note: You'll need to remove all non-alphanumeric characters (punctuation, spaces and symbols) and turn everything into the same case (lower or upper case) in order to check for palindromes.
// We'll pass strings with varying formats, such as racecar, RaceCar, and race CAR among others.
// We'll also pass strings with special symbols, such as 2A3*3a2, 2A3 3a2, and 2_A3*3#A2.
// Testcases: palindrome("eye") should return a boolean.
// :palindrome("eye") should return true.
// :palindrome("_eye") should return true.
// :palindrome("race car") should return true.
// :palindrome("not a palindrome") should return false.
// :palindrome("A man, a plan, a canal. Panama") should return true.
// :palindrome("never odd or even") should return true.
// :palindrome("nope") should return false.
// :palindrome("almostomla") should return false.
// :palindrome("My age is 0, 0 si ega ym.") should return true.
// :palindrome("1 eye for of 1 eye.") should return false.
// :palindrome("0_0 (: /-\ :) 0-0") should return true.
// :palindrome("five|\_/|four") should return false.
function palindrome(str) {
// Convert str to arr of no special characters
let original = str.match(/[a-zA-Z0-9]+/g).join("").toLowerCase().split("");
// make a copy to keep original arr after reverse for comparision, if not reverse() will change original arr
const copyOriginal = original.slice(0);
const reverse = original.reverse();
// loop to find char. that different bw 2 arr
for ( let i=0; i< reverse.length; i++){
if(reverse[i]!==copyOriginal[i]){
return false;
}
}
return true;
}
console.log(palindrome("not a palindrome"));