|
21458 | 21458 | <ul class="md-nav__list">
|
21459 | 21459 |
|
21460 | 21460 | <li class="md-nav__item">
|
21461 |
| - <a href="#solution-1" class="md-nav__link"> |
| 21461 | + <a href="#solution-1-parsing-and-storing" class="md-nav__link"> |
21462 | 21462 | <span class="md-ellipsis">
|
21463 |
| - Solution 1 |
| 21463 | + Solution 1: Parsing and Storing |
21464 | 21464 | </span>
|
21465 | 21465 | </a>
|
21466 | 21466 |
|
@@ -91169,8 +91169,11 @@ <h2 id="description">Description</h2>
|
91169 | 91169 | <h2 id="solutions">Solutions</h2>
|
91170 | 91170 | <!-- solution:start -->
|
91171 | 91171 |
|
91172 |
| -<h3 id="solution-1">Solution 1</h3> |
91173 |
| -<div class="tabbed-set tabbed-alternate" data-tabs="1:4"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label></div> |
| 91172 | +<h3 id="solution-1-parsing-and-storing">Solution 1: Parsing and Storing</h3> |
| 91173 | +<p>Parse the <code>compressedString</code> into characters <span class="arithmatex">\(c\)</span> and their corresponding repetition counts <span class="arithmatex">\(x\)</span>, and store them in an array or list <span class="arithmatex">\(d\)</span>. Use <span class="arithmatex">\(p\)</span> to point to the current character.</p> |
| 91174 | +<p>Then perform operations in <code>next</code> and <code>hasNext</code>.</p> |
| 91175 | +<p>The initialization time complexity is <span class="arithmatex">\(O(n)\)</span>, and the time complexity of the other operations is <span class="arithmatex">\(O(1)\)</span>. Here, <span class="arithmatex">\(n\)</span> is the length of <code>compressedString</code>.</p> |
| 91176 | +<div class="tabbed-set tabbed-alternate" data-tabs="1:5"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label></div> |
91174 | 91177 | <div class="tabbed-content">
|
91175 | 91178 | <div class="tabbed-block">
|
91176 | 91179 | <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
|
@@ -91518,6 +91521,92 @@ <h3 id="solution-1">Solution 1</h3>
|
91518 | 91521 | <span class="cm"> */</span>
|
91519 | 91522 | </code></pre></div></td></tr></table></div>
|
91520 | 91523 | </div>
|
| 91524 | +<div class="tabbed-block"> |
| 91525 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
| 91526 | +<span class="normal"> 2</span> |
| 91527 | +<span class="normal"> 3</span> |
| 91528 | +<span class="normal"> 4</span> |
| 91529 | +<span class="normal"> 5</span> |
| 91530 | +<span class="normal"> 6</span> |
| 91531 | +<span class="normal"> 7</span> |
| 91532 | +<span class="normal"> 8</span> |
| 91533 | +<span class="normal"> 9</span> |
| 91534 | +<span class="normal">10</span> |
| 91535 | +<span class="normal">11</span> |
| 91536 | +<span class="normal">12</span> |
| 91537 | +<span class="normal">13</span> |
| 91538 | +<span class="normal">14</span> |
| 91539 | +<span class="normal">15</span> |
| 91540 | +<span class="normal">16</span> |
| 91541 | +<span class="normal">17</span> |
| 91542 | +<span class="normal">18</span> |
| 91543 | +<span class="normal">19</span> |
| 91544 | +<span class="normal">20</span> |
| 91545 | +<span class="normal">21</span> |
| 91546 | +<span class="normal">22</span> |
| 91547 | +<span class="normal">23</span> |
| 91548 | +<span class="normal">24</span> |
| 91549 | +<span class="normal">25</span> |
| 91550 | +<span class="normal">26</span> |
| 91551 | +<span class="normal">27</span> |
| 91552 | +<span class="normal">28</span> |
| 91553 | +<span class="normal">29</span> |
| 91554 | +<span class="normal">30</span> |
| 91555 | +<span class="normal">31</span> |
| 91556 | +<span class="normal">32</span> |
| 91557 | +<span class="normal">33</span> |
| 91558 | +<span class="normal">34</span> |
| 91559 | +<span class="normal">35</span> |
| 91560 | +<span class="normal">36</span> |
| 91561 | +<span class="normal">37</span> |
| 91562 | +<span class="normal">38</span> |
| 91563 | +<span class="normal">39</span> |
| 91564 | +<span class="normal">40</span> |
| 91565 | +<span class="normal">41</span> |
| 91566 | +<span class="normal">42</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nx">StringIterator</span><span class="w"> </span><span class="p">{</span> |
| 91567 | +<span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="nx">d</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="kt">string</span><span class="p">,</span><span class="w"> </span><span class="kt">number</span><span class="p">][]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span> |
| 91568 | +<span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="nx">p</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span> |
| 91569 | + |
| 91570 | +<span class="w"> </span><span class="kr">constructor</span><span class="p">(</span><span class="nx">compressedString</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 91571 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">compressedString</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> |
| 91572 | +<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span> |
| 91573 | +<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 91574 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">c</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">compressedString</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span> |
| 91575 | +<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span> |
| 91576 | +<span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">;</span> |
| 91577 | +<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="o">!</span><span class="nb">isNaN</span><span class="p">(</span><span class="nb">Number</span><span class="p">(</span><span class="nx">compressedString</span><span class="p">[</span><span class="nx">i</span><span class="p">])))</span><span class="w"> </span><span class="p">{</span> |
| 91578 | +<span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">10</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">Number</span><span class="p">(</span><span class="nx">compressedString</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span> |
| 91579 | +<span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">;</span> |
| 91580 | +<span class="w"> </span><span class="p">}</span> |
| 91581 | +<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">d</span><span class="p">.</span><span class="nx">push</span><span class="p">([</span><span class="nx">c</span><span class="p">,</span><span class="w"> </span><span class="nx">x</span><span class="p">]);</span> |
| 91582 | +<span class="w"> </span><span class="p">}</span> |
| 91583 | +<span class="w"> </span><span class="p">}</span> |
| 91584 | + |
| 91585 | +<span class="w"> </span><span class="nx">next</span><span class="p">()</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="p">{</span> |
| 91586 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">hasNext</span><span class="p">())</span><span class="w"> </span><span class="p">{</span> |
| 91587 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s1">' '</span><span class="p">;</span> |
| 91588 | +<span class="w"> </span><span class="p">}</span> |
| 91589 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">d</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">p</span><span class="p">][</span><span class="mf">0</span><span class="p">];</span> |
| 91590 | +<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">d</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">p</span><span class="p">][</span><span class="mf">1</span><span class="p">]</span><span class="o">--</span><span class="p">;</span> |
| 91591 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">d</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">p</span><span class="p">][</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 91592 | +<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">p</span><span class="o">++</span><span class="p">;</span> |
| 91593 | +<span class="w"> </span><span class="p">}</span> |
| 91594 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">ans</span><span class="p">;</span> |
| 91595 | +<span class="w"> </span><span class="p">}</span> |
| 91596 | + |
| 91597 | +<span class="w"> </span><span class="nx">hasNext</span><span class="p">()</span><span class="o">:</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="p">{</span> |
| 91598 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">p</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">d</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">d</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">p</span><span class="p">][</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mf">0</span><span class="p">;</span> |
| 91599 | +<span class="w"> </span><span class="p">}</span> |
| 91600 | +<span class="p">}</span> |
| 91601 | + |
| 91602 | +<span class="cm">/**</span> |
| 91603 | +<span class="cm"> * Your StringIterator object will be instantiated and called as such:</span> |
| 91604 | +<span class="cm"> * var obj = new StringIterator(compressedString)</span> |
| 91605 | +<span class="cm"> * var param_1 = obj.next()</span> |
| 91606 | +<span class="cm"> * var param_2 = obj.hasNext()</span> |
| 91607 | +<span class="cm"> */</span> |
| 91608 | +</code></pre></div></td></tr></table></div> |
| 91609 | +</div> |
91521 | 91610 | </div>
|
91522 | 91611 | </div>
|
91523 | 91612 | <!-- solution:end -->
|
|
0 commit comments