Class CombinationIterator

java.lang.Object
g1201_1300.s1286_iterator_for_combination.CombinationIterator

public class CombinationIterator extends Object
1286 - Iterator for Combination.<p>Medium</p> <p>Design the <code>CombinationIterator</code> class:</p> <ul> <li><code>CombinationIterator(string characters, int combinationLength)</code> Initializes the object with a string <code>characters</code> of <strong>sorted distinct</strong> lowercase English letters and a number <code>combinationLength</code> as arguments.</li> <li><code>next()</code> Returns the next combination of length <code>combinationLength</code> in <strong>lexicographical order</strong>.</li> <li><code>hasNext()</code> Returns <code>true</code> if and only if there exists a next combination.</li> </ul> <p><strong>Example 1:</strong></p> <p><strong>Input</strong> [&ldquo;CombinationIterator&rdquo;, &ldquo;next&rdquo;, &ldquo;hasNext&rdquo;, &ldquo;next&rdquo;, &ldquo;hasNext&rdquo;, &ldquo;next&rdquo;, &ldquo;hasNext&rdquo;] [[&ldquo;abc&rdquo;, 2], [], [], [], [], [], []]</p> <p><strong>Output:</strong> [null, &ldquo;ab&rdquo;, true, &ldquo;ac&rdquo;, true, &ldquo;bc&rdquo;, false]</p> <p><strong>Explanation:</strong> CombinationIterator itr = new CombinationIterator(&ldquo;abc&rdquo;, 2); itr.next(); // return &ldquo;ab&rdquo; itr.hasNext(); // return True itr.next(); // return &ldquo;ac&rdquo; itr.hasNext(); // return True itr.next(); // return &ldquo;bc&rdquo; itr.hasNext(); // return False</p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= combinationLength <= characters.length <= 15</code></li> <li>All the characters of <code>characters</code> are <strong>unique</strong>.</li> <li>At most <code>10<sup>4</sup></code> calls will be made to <code>next</code> and <code>hasNext</code>.</li> <li>It is guaranteed that all calls of the function <code>next</code> are valid.</li> </ul>
  • Constructor Details

    • CombinationIterator

      public CombinationIterator(String characters, int combinationLength)
  • Method Details

    • next

      public String next()
    • hasNext

      public boolean hasNext()