java.lang.Object
g1901_2000.s1987_number_of_unique_good_subsequences.Solution

public class Solution extends Object
1987 - Number of Unique Good Subsequences.<p>Hard</p> <p>You are given a binary string <code>binary</code>. A <strong>subsequence</strong> of <code>binary</code> is considered <strong>good</strong> if it is <strong>not empty</strong> and has <strong>no leading zeros</strong> (with the exception of <code>&quot;0&quot;</code>).</p> <p>Find the number of <strong>unique good subsequences</strong> of <code>binary</code>.</p> <ul> <li>For example, if <code>binary = &quot;001&quot;</code>, then all the <strong>good</strong> subsequences are <code>[&quot;0&quot;, &quot;0&quot;, &quot;1&quot;]</code>, so the <strong>unique</strong> good subsequences are <code>&quot;0&quot;</code> and <code>&quot;1&quot;</code>. Note that subsequences <code>&quot;00&quot;</code>, <code>&quot;01&quot;</code>, and <code>&quot;001&quot;</code> are not good because they have leading zeros.</li> </ul> <p>Return <em>the number of <strong>unique good subsequences</strong> of</em> <code>binary</code>. Since the answer may be very large, return it <strong>modulo</strong> <code>10<sup>9</sup> + 7</code>.</p> <p>A <strong>subsequence</strong> is a sequence that can be derived from another sequence by deleting some or no elements without changing the order of the remaining elements.</p> <p><strong>Example 1:</strong></p> <p><strong>Input:</strong> binary = &ldquo;001&rdquo;</p> <p><strong>Output:</strong> 2</p> <p><strong>Explanation:</strong> The good subsequences of binary are [&ldquo;0&rdquo;, &ldquo;0&rdquo;, &ldquo;1&rdquo;].</p> <p>The unique good subsequences are &ldquo;0&rdquo; and &ldquo;1&rdquo;.</p> <p><strong>Example 2:</strong></p> <p><strong>Input:</strong> binary = &ldquo;11&rdquo;</p> <p><strong>Output:</strong> 2</p> <p><strong>Explanation:</strong> The good subsequences of binary are [&ldquo;1&rdquo;, &ldquo;1&rdquo;, &ldquo;11&rdquo;].</p> <p>The unique good subsequences are &ldquo;1&rdquo; and &ldquo;11&rdquo;.</p> <p><strong>Example 3:</strong></p> <p><strong>Input:</strong> binary = &ldquo;101&rdquo;</p> <p><strong>Output:</strong> 5</p> <p><strong>Explanation:</strong> The good subsequences of binary are [&ldquo;1&rdquo;, &ldquo;0&rdquo;, &ldquo;1&rdquo;, &ldquo;10&rdquo;, &ldquo;11&rdquo;, &ldquo;101&rdquo;].</p> <p>The unique good subsequences are &ldquo;0&rdquo;, &ldquo;1&rdquo;, &ldquo;10&rdquo;, &ldquo;11&rdquo;, and &ldquo;101&rdquo;.</p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= binary.length <= 10<sup>5</sup></code></li> <li><code>binary</code> consists of only <code>'0'</code>s and <code>'1'</code>s.</li> </ul>
  • Constructor Details

    • Solution

      public Solution()
  • Method Details

    • numberOfUniqueGoodSubsequences

      public int numberOfUniqueGoodSubsequences(String binary)