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.