Number of Ways to Split a String LeetCode solution in C++

1
class Solution {
2
public:
3
int MOD = 1e9 + 7;
4
int numWays(string s) {
5
int ones = count(begin(s), end(s), '1'), n = s.size();
6
if (ones % 3) return 0;
7
if (!ones) return (((n - 1) * 1LL * (n - 2) * 1LL) / 2) % MOD; /// n- 1 C 2
8

9
int left = 0, right = 0, count = 0, i = 0;
10
while (count <= ones / 3) {
11
count += s[i++] == '1';
12
if (count == ones / 3) ++left;
13
}
14
i = n - 1, count = 0;
15
while (count <= ones / 3) {
16
count += s[i--] == '1';
17
if (count == ones / 3) ++right;
18
}
19

20
return (left * 1LL * right * 1LL) % MOD;
21
}
22
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0