LeetCode: Number of Ways to Split a String Solution
Playing with indexesApproach
Calculate number of ones and store their indexes
If number of ones is not divisible by 3, then the result is 0
If number of ones is 0, then the result is combination of string's length minus 1, taken 2
100000023string length of 645we have 5 possible position to place dividers, but we only need to place 2 dividers67so the result will be the combination of 2-divider selected in 5 possibilities
In the normal case, the result will be the possibilities of placing dividers in the first and the last gaps
1s = 1 0 0 1 0 0 0 1 0 1 0 0 1 1 02i = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 143i1 = 0 _ _ 3 _ _ _ 7 _ 9 _ _ 12 13 _45to maintain size of the splits, we could place any dividers between 2 gaps:6- (3, 7) - 4 possibilities7- (9, 12) - 3 possibilities8so the result will be 4 * 3 = 12
Implementation
1var numWays = function (s) {2 const MOD = 1e9 + 73 const idxOfOnes = s4 .split("")5 .map((char, idx) => [char, idx])6 .filter(([char, idx]) => char === "1")7 .map(([char, idx]) => idx)89 if (idxOfOnes.length % 3 !== 0) return 010 if (idxOfOnes.length === 0)11 return (((s.length - 1) * (s.length - 2)) / 2) % MOD1213 const firstGapEnd = idxOfOnes.length / 314 const firstGapStart = firstGapEnd - 115 const secondGapEnd = firstGapEnd * 216 const secondGapStart = secondGapEnd - 11718 return (19 ((idxOfOnes[firstGapEnd] - idxOfOnes[firstGapStart]) *20 (idxOfOnes[secondGapEnd] - idxOfOnes[secondGapStart])) %21 MOD22 )23}
References
Similar problems
Split Array with Equal Sum
Comments
Loading comments...
Tags
leetcode
math
string
Apply and earn a $2,500 bonus once you're hired on your first job!
Clients from the Fortune 500 to Silicon Valley startups
Choose your own rate, get paid on time
From hourly, part-time, to full-time positions
Flexible remote working environment
A lot of open JavaScript jobs!!
Fact corner: Referred talent are 5x more likely to pass the Toptal screening process than the average applicant.
Still hesitate? Read HoningJS author's guide on dealing with Toptal interview process.
Next Post
Keep removing until all is good
Previous Post
Count number of letters