|
16035 | 16035 | <ul class="md-nav__list">
|
16036 | 16036 |
|
16037 | 16037 | <li class="md-nav__item">
|
16038 |
| - <a href="#solution-1" class="md-nav__link"> |
| 16038 | + <a href="#solution-1-counting" class="md-nav__link"> |
16039 | 16039 | <span class="md-ellipsis">
|
16040 |
| - Solution 1 |
| 16040 | + Solution 1: Counting |
16041 | 16041 | </span>
|
16042 | 16042 | </a>
|
16043 | 16043 |
|
@@ -87172,7 +87172,10 @@ <h2 id="description">Description</h2>
|
87172 | 87172 | <h2 id="solutions">Solutions</h2>
|
87173 | 87173 | <!-- solution:start -->
|
87174 | 87174 |
|
87175 |
| -<h3 id="solution-1">Solution 1</h3> |
| 87175 | +<h3 id="solution-1-counting">Solution 1: Counting</h3> |
| 87176 | +<p>We use a hash table or an array of length <span class="arithmatex">\(26\)</span> <span class="arithmatex">\(\text{cnt}\)</span> to store the frequency of each character. Then, we traverse each character <span class="arithmatex">\(\text{s[i]}\)</span> from the beginning. If <span class="arithmatex">\(\text{cnt[s[i]]}\)</span> is <span class="arithmatex">\(1\)</span>, we return <span class="arithmatex">\(i\)</span>.</p> |
| 87177 | +<p>If no such character is found after the traversal, we return <span class="arithmatex">\(-1\)</span>.</p> |
| 87178 | +<p>The time complexity is <span class="arithmatex">\(O(n)\)</span>, where <span class="arithmatex">\(n\)</span> is the length of the string. The space complexity is <span class="arithmatex">\(O(|\Sigma|)\)</span>, where <span class="arithmatex">\(\Sigma\)</span> is the character set. In this problem, the character set consists of lowercase letters, so <span class="arithmatex">\(|\Sigma|=26\)</span>.</p> |
87176 | 87179 | <div class="tabbed-set tabbed-alternate" data-tabs="1:7"><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" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" 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><label for="__tabbed_1_6">JavaScript</label><label for="__tabbed_1_7">PHP</label></div>
|
87177 | 87180 | <div class="tabbed-content">
|
87178 | 87181 | <div class="tabbed-block">
|
@@ -87296,12 +87299,12 @@ <h3 id="solution-1">Solution 1</h3>
|
87296 | 87299 | <span class="normal">10</span>
|
87297 | 87300 | <span class="normal">11</span>
|
87298 | 87301 | <span class="normal">12</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">firstUniqChar</span><span class="p">(</span><span class="nx">s</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
|
87299 |
| -<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">cnt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="mf">26</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span> |
| 87302 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">cnt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Map</span><span class="o"><</span><span class="kt">string</span><span class="p">,</span><span class="w"> </span><span class="kt">number</span><span class="o">></span><span class="p">();</span> |
87300 | 87303 | <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">const</span><span class="w"> </span><span class="nx">c</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="nx">s</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
87301 |
| -<span class="w"> </span><span class="nx">cnt</span><span class="p">[</span><span class="nx">c</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">97</span><span class="p">]</span><span class="o">++</span><span class="p">;</span> |
| 87304 | +<span class="w"> </span><span class="nx">cnt</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="nx">cnt</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">c</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="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span> |
87302 | 87305 | <span class="w"> </span><span class="p">}</span>
|
87303 |
| -<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</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><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
87304 |
| -<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">cnt</span><span class="p">[</span><span class="nx">s</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">97</span><span class="p">]</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 87306 | +<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</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><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 87307 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">cnt</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
87305 | 87308 | <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span>
|
87306 | 87309 | <span class="w"> </span><span class="p">}</span>
|
87307 | 87310 | <span class="w"> </span><span class="p">}</span>
|
@@ -87330,12 +87333,12 @@ <h3 id="solution-1">Solution 1</h3>
|
87330 | 87333 | <span class="cm"> * @return {number}</span>
|
87331 | 87334 | <span class="cm"> */</span>
|
87332 | 87335 | <span class="kd">var</span><span class="w"> </span><span class="nx">firstUniqChar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="p">(</span><span class="nx">s</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
87333 |
| -<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">cnt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="mf">26</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span> |
| 87336 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">cnt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Map</span><span class="p">();</span> |
87334 | 87337 | <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">const</span><span class="w"> </span><span class="nx">c</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="nx">s</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
87335 |
| -<span class="w"> </span><span class="o">++</span><span class="nx">cnt</span><span class="p">[</span><span class="nx">c</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="s1">'a'</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">()];</span> |
| 87338 | +<span class="w"> </span><span class="nx">cnt</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="nx">cnt</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">c</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="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span> |
87336 | 87339 | <span class="w"> </span><span class="p">}</span>
|
87337 | 87340 | <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</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><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
87338 |
| -<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">cnt</span><span class="p">[</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">charCodeAt</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="s1">'a'</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">()]</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 87341 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">cnt</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
87339 | 87342 | <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span>
|
87340 | 87343 | <span class="w"> </span><span class="p">}</span>
|
87341 | 87344 | <span class="w"> </span><span class="p">}</span>
|
@@ -87412,6 +87415,11 @@ <h3 id="solution-1">Solution 1</h3>
|
87412 | 87415 |
|
87413 | 87416 | <nav>
|
87414 | 87417 |
|
| 87418 | + <a href="https://github.com/acbin" class="md-author" title="@acbin"> |
| 87419 | + |
| 87420 | + <img src="https://avatars.githubusercontent.com/u/44314231?v=4&size=72" alt="acbin"> |
| 87421 | + </a> |
| 87422 | + |
87415 | 87423 | <a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
|
87416 | 87424 |
|
87417 | 87425 | <img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
|
|
0 commit comments