Number of Ways to Split a String LeetCode solution in C++
1class Solution {2public:3int MOD = 1e9 + 7;4int numWays(string s) {5int ones = count(begin(s), end(s), '1'), n = s.size();6if (ones % 3) return 0;7if (!ones) return (((n - 1) * 1LL * (n - 2) * 1LL) / 2) % MOD; /// n- 1 C 289int left = 0, right = 0, count = 0, i = 0;10while (count <= ones / 3) {11count += s[i++] == '1';12if (count == ones / 3) ++left;13}14i = n - 1, count = 0;15while (count <= ones / 3) {16count += s[i--] == '1';17if (count == ones / 3) ++right;18}1920return (left * 1LL * right * 1LL) % MOD;21}22};