Need detailed explanation for how match function is used in Advanced solution of Check for Palindromes

Hey guys, I have been trying to rap my head around the advanced solution, and did not find really any comments about it other than that it is more efficient. Specifically, I have been trying to understand how the match works in this problem. A step by step explanation is much needed, and I think would be much appreciated by all the beginner level campers. Thanks!

I finally wrapped my head around the use of match thanks to the documentation but now the issue i am having is with the while loop (back > forth). If we take as an example:

palindrome(“A man, a plan, a canal. Panama”) should return true.

It goes through the first iteration, matching “a” for “a” then iterating to the next loop.

after the first pass:

front:1
back:2

in the second pass we see a space, which meets the criteria for
while ( str[front].match(/[\W_]/), which then adds ++ to front, which then matches
"m" for “m” and then iterating to the next loop

after the second pass:

front:3
back:3

because it doesn’t meet the criteria for the while loop (back > forth) it stops iterating and returns true, having only matched “am”.

Am I reading something wrong here?

Why do you think back is 2 after the first pass?

front starts at 0 and back starts at 29. At the end of the outer while loop (back > front), front is 1 and back is 28.

Put some console.log statements in for front and back so you can see what they are through the code execution.

1 Like