DEV Community

Discussion on: Daily Challenge #29 - Xs and Os

 
savagepixie profile image
SavagePixie

Yeah, I found the same issue when I tried to solve it in Codewars. So I had to do the same. Looking through other people's solutions, there's one that I find interesting that uses split() instead of a regular expression. Something like this:

const xo = str => str.toLowerCase().split('x').length == str.toLowerCase().split('y').length
Thread Thread
 
alvaromontoro profile image
Alvaro Montoro

The split approach is interesting. I was playing with different options, but not with this. Also, I found that using toLowerCase() made the code considerably slower, it works considerably faster if you use a regular expression in the split:

const xo6 = str => str.split(/x/i).length == str.split(/o/i).length;
Thread Thread
 
savagepixie profile image
SavagePixie

I think this is my favourite solution. I hadn't checked its speed, but I thought that toLowerCase() probably didn't make it any smoother than returning an empty array if there are no matches.

Thread Thread
 
alvaromontoro profile image
Alvaro Montoro

I checked different solutions with jsperf and this was the second fastest by a little (but results may vary.)