<p>Given a string <code>s</code>, return <em>the number of <strong>homogenous</strong> substrings of </em><code>s</code><em>.</em> Since the answer may be too large, return it <strong>modulo</strong> <code>10<sup>9</sup> + 7</code>.</p> <p>A string is <strong>homogenous</strong> if all the characters of the string are the same.</p> <p>A <strong>substring</strong> is a contiguous sequence of characters within a string.</p> <p> </p> <p><strong>Example 1:</strong></p> <pre> <strong>Input:</strong> s = "abbcccaa" <strong>Output:</strong> 13 <strong>Explanation:</strong> The homogenous substrings are listed as below: "a" appears 3 times. "aa" appears 1 time. "b" appears 2 times. "bb" appears 1 time. "c" appears 3 times. "cc" appears 2 times. "ccc" appears 1 time. 3 + 1 + 2 + 1 + 3 + 2 + 1 = 13.</pre> <p><strong>Example 2:</strong></p> <pre> <strong>Input:</strong> s = "xy" <strong>Output:</strong> 2 <strong>Explanation:</strong> The homogenous substrings are "x" and "y".</pre> <p><strong>Example 3:</strong></p> <pre> <strong>Input:</strong> s = "zzzzz" <strong>Output:</strong> 15 </pre> <p> </p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= s.length <= 10<sup>5</sup></code></li> <li><code>s</code> consists of lowercase letters.</li> </ul>