Please solve the programming task below using a self-contained code snippet in a markdown code block.

Given a binary string s, you can split s into 3 non-empty strings s1, s2, and s3 where s1 + s2 + s3 = s.
Return the number of ways s can be split such that the number of ones is the same in s1, s2, and s3. Since the answer may be too large, return it modulo 109 + 7.
 
Please complete the following python code precisely:
```python
class Solution:
    def numWays(self, s: str) -> int:
```