|
51145 | 51145 | <ul class="md-nav__list"> |
51146 | 51146 |
|
51147 | 51147 | <li class="md-nav__item"> |
51148 | | - <a href="#solution-1" class="md-nav__link"> |
| 51148 | + <a href="#solution-1-array-or-hash-table" class="md-nav__link"> |
51149 | 51149 | <span class="md-ellipsis"> |
51150 | | - Solution 1 |
| 51150 | + Solution 1: Array or Hash Table |
51151 | 51151 | </span> |
51152 | 51152 | </a> |
51153 | 51153 |
|
@@ -82327,8 +82327,12 @@ <h2 id="description">Description</h2> |
82327 | 82327 | <h2 id="solutions">Solutions</h2> |
82328 | 82328 | <!-- solution:start --> |
82329 | 82329 |
|
82330 | | -<h3 id="solution-1">Solution 1</h3> |
82331 | | -<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> |
| 82330 | +<h3 id="solution-1-array-or-hash-table">Solution 1: Array or Hash Table</h3> |
| 82331 | +<p>We can use a hash table or an array $\textit{cnt}$ of length $26$ to record the occurrences of each character.</p> |
| 82332 | +<p>Traverse the string $\textit{s}$. For each character $\textit{c}$, increment the value of $\textit{cnt}[c]$ by $1$, and then add the value of $\textit{cnt}[c]$ to the answer.</p> |
| 82333 | +<p>Finally, return the answer.</p> |
| 82334 | +<p>The time complexity is $O(n)$, where $n$ is the length of the string $\textit{s}$. The space complexity is $O(|\Sigma|)$, where $\Sigma$ is the character set. Here, it is lowercase English letters, so $|\Sigma|=26$.</p> |
| 82335 | +<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">Rust</label><label for="__tabbed_1_7">JavaScript</label></div> |
82332 | 82336 | <div class="tabbed-content"> |
82333 | 82337 | <div class="tabbed-block"> |
82334 | 82338 | <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span> |
@@ -82358,16 +82362,12 @@ <h3 id="solution-1">Solution 1</h3> |
82358 | 82362 | <span class="normal"> 7</span> |
82359 | 82363 | <span class="normal"> 8</span> |
82360 | 82364 | <span class="normal"> 9</span> |
82361 | | -<span class="normal">10</span> |
82362 | | -<span class="normal">11</span> |
82363 | | -<span class="normal">12</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span> <span class="nc">Solution</span><span class="w"> </span><span class="p">{</span> |
| 82365 | +<span class="normal">10</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span> <span class="nc">Solution</span><span class="w"> </span><span class="p">{</span> |
82364 | 82366 | <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="nf">numberOfSubstrings</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">s</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
82365 | 82367 | <span class="w"> </span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="n">cnt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="o">[</span><span class="mi">26</span><span class="o">]</span><span class="p">;</span> |
82366 | 82368 | <span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> |
82367 | | -<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">s</span><span class="p">.</span><span class="na">length</span><span class="p">();</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
82368 | | -<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">s</span><span class="p">.</span><span class="na">charAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="sc">'a'</span><span class="p">;</span> |
82369 | | -<span class="w"> </span><span class="o">++</span><span class="n">cnt</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="p">;</span> |
82370 | | -<span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">cnt</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="p">;</span> |
| 82369 | +<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">s</span><span class="p">.</span><span class="na">toCharArray</span><span class="p">())</span><span class="w"> </span><span class="p">{</span> |
| 82370 | +<span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="o">++</span><span class="n">cnt</span><span class="o">[</span><span class="n">c</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="sc">'a'</span><span class="o">]</span><span class="p">;</span> |
82371 | 82371 | <span class="w"> </span><span class="p">}</span> |
82372 | 82372 | <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ans</span><span class="p">;</span> |
82373 | 82373 | <span class="w"> </span><span class="p">}</span> |
@@ -82418,6 +82418,80 @@ <h3 id="solution-1">Solution 1</h3> |
82418 | 82418 | <span class="p">}</span> |
82419 | 82419 | </code></pre></div></td></tr></table></div> |
82420 | 82420 | </div> |
| 82421 | +<div class="tabbed-block"> |
| 82422 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span> |
| 82423 | +<span class="normal">2</span> |
| 82424 | +<span class="normal">3</span> |
| 82425 | +<span class="normal">4</span> |
| 82426 | +<span class="normal">5</span> |
| 82427 | +<span class="normal">6</span> |
| 82428 | +<span class="normal">7</span> |
| 82429 | +<span class="normal">8</span> |
| 82430 | +<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">numberOfSubstrings</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> |
| 82431 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">cnt</span><span class="o">:</span><span class="w"> </span><span class="kt">Record</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="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{};</span> |
| 82432 | +<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span> |
| 82433 | +<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> |
| 82434 | +<span class="w"> </span><span class="nx">cnt</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="p">(</span><span class="nx">cnt</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> |
| 82435 | +<span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="nx">cnt</span><span class="p">[</span><span class="nx">c</span><span class="p">];</span> |
| 82436 | +<span class="w"> </span><span class="p">}</span> |
| 82437 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">ans</span><span class="p">;</span> |
| 82438 | +<span class="p">}</span> |
| 82439 | +</code></pre></div></td></tr></table></div> |
| 82440 | +</div> |
| 82441 | +<div class="tabbed-block"> |
| 82442 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
| 82443 | +<span class="normal"> 2</span> |
| 82444 | +<span class="normal"> 3</span> |
| 82445 | +<span class="normal"> 4</span> |
| 82446 | +<span class="normal"> 5</span> |
| 82447 | +<span class="normal"> 6</span> |
| 82448 | +<span class="normal"> 7</span> |
| 82449 | +<span class="normal"> 8</span> |
| 82450 | +<span class="normal"> 9</span> |
| 82451 | +<span class="normal">10</span> |
| 82452 | +<span class="normal">11</span> |
| 82453 | +<span class="normal">12</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">impl</span><span class="w"> </span><span class="n">Solution</span><span class="w"> </span><span class="p">{</span> |
| 82454 | +<span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">number_of_substrings</span><span class="p">(</span><span class="n">s</span><span class="p">:</span><span class="w"> </span><span class="nb">String</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="kt">i64</span><span class="w"> </span><span class="p">{</span> |
| 82455 | +<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">cnt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="mi">26</span><span class="p">];</span> |
| 82456 | +<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0_</span><span class="k">i64</span><span class="p">;</span> |
| 82457 | +<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">s</span><span class="p">.</span><span class="n">chars</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> |
| 82458 | +<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">idx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">c</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="kt">u8</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="sc">b'a'</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="kt">usize</span><span class="p">;</span> |
| 82459 | +<span class="w"> </span><span class="n">cnt</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> |
| 82460 | +<span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">cnt</span><span class="p">[</span><span class="n">idx</span><span class="p">];</span> |
| 82461 | +<span class="w"> </span><span class="p">}</span> |
| 82462 | +<span class="w"> </span><span class="n">ans</span> |
| 82463 | +<span class="w"> </span><span class="p">}</span> |
| 82464 | +<span class="p">}</span> |
| 82465 | +</code></pre></div></td></tr></table></div> |
| 82466 | +</div> |
| 82467 | +<div class="tabbed-block"> |
| 82468 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
| 82469 | +<span class="normal"> 2</span> |
| 82470 | +<span class="normal"> 3</span> |
| 82471 | +<span class="normal"> 4</span> |
| 82472 | +<span class="normal"> 5</span> |
| 82473 | +<span class="normal"> 6</span> |
| 82474 | +<span class="normal"> 7</span> |
| 82475 | +<span class="normal"> 8</span> |
| 82476 | +<span class="normal"> 9</span> |
| 82477 | +<span class="normal">10</span> |
| 82478 | +<span class="normal">11</span> |
| 82479 | +<span class="normal">12</span> |
| 82480 | +<span class="normal">13</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span> |
| 82481 | +<span class="cm"> * @param {string} s</span> |
| 82482 | +<span class="cm"> * @return {number}</span> |
| 82483 | +<span class="cm"> */</span> |
| 82484 | +<span class="kd">var</span><span class="w"> </span><span class="nx">numberOfSubstrings</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> |
| 82485 | +<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="p">{};</span> |
| 82486 | +<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span> |
| 82487 | +<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> |
| 82488 | +<span class="w"> </span><span class="nx">cnt</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="p">(</span><span class="nx">cnt</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> |
| 82489 | +<span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="nx">cnt</span><span class="p">[</span><span class="nx">c</span><span class="p">];</span> |
| 82490 | +<span class="w"> </span><span class="p">}</span> |
| 82491 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">ans</span><span class="p">;</span> |
| 82492 | +<span class="p">};</span> |
| 82493 | +</code></pre></div></td></tr></table></div> |
| 82494 | +</div> |
82421 | 82495 | </div> |
82422 | 82496 | </div> |
82423 | 82497 | <!-- solution:end --> |
|
0 commit comments