java.lang.Object
g1901_2000.s1915_number_of_wonderful_substrings.Solution

public class Solution extends Object
1915 - Number of Wonderful Substrings.<p>Medium</p> <p>A <strong>wonderful</strong> string is a string where <strong>at most one</strong> letter appears an <strong>odd</strong> number of times.</p> <ul> <li>For example, <code>&quot;ccjjc&quot;</code> and <code>&quot;abab&quot;</code> are wonderful, but <code>&quot;ab&quot;</code> is not.</li> </ul> <p>Given a string <code>word</code> that consists of the first ten lowercase English letters (<code>'a'</code> through <code>'j'</code>), return <em>the <strong>number of wonderful non-empty substrings</strong> in</em> <code>word</code><em>. If the same substring appears multiple times in</em> <code>word</code><em>, then count <strong>each occurrence</strong> separately.</em></p> <p>A <strong>substring</strong> is a contiguous sequence of characters in a string.</p> <p><strong>Example 1:</strong></p> <p><strong>Input:</strong> word = &ldquo;aba&rdquo;</p> <p><strong>Output:</strong> 4</p> <p><strong>Explanation:</strong> The four wonderful substrings are underlined below:</p> <ul> <li> <p>&ldquo;<strong>a</strong>ba&rdquo; -> &ldquo;a&rdquo;</p> </li> <li> <p>&ldquo;a<strong>b</strong>a&rdquo; -> &ldquo;b&rdquo;</p> </li> <li> <p>&ldquo;ab<strong>a</strong>&rdquo; -> &ldquo;a&rdquo;</p> </li> <li> <p>&ldquo;<strong>aba</strong>&rdquo; -> &ldquo;aba&rdquo;</p> </li> </ul> <p><strong>Example 2:</strong></p> <p><strong>Input:</strong> word = &ldquo;aabb&rdquo;</p> <p><strong>Output:</strong> 9</p> <p><strong>Explanation:</strong> The nine wonderful substrings are underlined below:</p> <ul> <li> <p>&ldquo;<strong>a</strong>abb&rdquo; -> &ldquo;a&rdquo;</p> </li> <li> <p>&ldquo;<strong>aa</strong>bb&rdquo; -> &ldquo;aa&rdquo;</p> </li> <li> <p>&ldquo;<strong>aab</strong>b&rdquo; -> &ldquo;aab&rdquo;</p> </li> <li> <p>&ldquo;<strong>aabb</strong>&rdquo; -> &ldquo;aabb&rdquo;</p> </li> <li> <p>&ldquo;a<strong>a</strong>bb&rdquo; -> &ldquo;a&rdquo;</p> </li> <li> <p>&ldquo;a<strong>abb</strong>&rdquo; -> &ldquo;abb&rdquo;</p> </li> <li> <p>&ldquo;aa<strong>b</strong>b&rdquo; -> &ldquo;b&rdquo;</p> </li> <li> <p>&ldquo;aa<strong>bb</strong>&rdquo; -> &ldquo;bb&rdquo;</p> </li> <li> <p>&ldquo;aab<strong>b</strong>&rdquo; -> &ldquo;b&rdquo;</p> </li> </ul> <p><strong>Example 3:</strong></p> <p><strong>Input:</strong> word = &ldquo;he&rdquo;</p> <p><strong>Output:</strong> 2</p> <p><strong>Explanation:</strong> The two wonderful substrings are underlined below:</p> <ul> <li> <p>&ldquo;<strong>h</strong>e&rdquo; -> &ldquo;h&rdquo;</p> </li> <li> <p>&ldquo;h<strong>e</strong>&rdquo; -> &ldquo;e&rdquo;</p> </li> </ul> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= word.length <= 10<sup>5</sup></code></li> <li><code>word</code> consists of lowercase English letters from <code>'a'</code> to <code>'j'</code>.</li> </ul>
  • Constructor Details

    • Solution

      public Solution()
  • Method Details

    • wonderfulSubstrings

      public long wonderfulSubstrings(String word)