Skip to content

Commit 52c3375

Browse files
committed
deploy: e2ef4bd
1 parent 1105db7 commit 52c3375

File tree

10 files changed

+7793
-7473
lines changed

10 files changed

+7793
-7473
lines changed

en/lc/3305/index.html

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86969,7 +86969,7 @@ <h3 id="solution-1-problem-transformation-sliding-window">Solution 1: Problem Tr
8696986969
<p>Traverse the string. If the current character is a vowel, add it to the hash table <span class="arithmatex">\(\textit{cnt}\)</span>; otherwise, increment <span class="arithmatex">\(\textit{x}\)</span> by one. If <span class="arithmatex">\(\textit{x} \ge k\)</span> and the size of the hash table <span class="arithmatex">\(\textit{cnt}\)</span> is <span class="arithmatex">\(5\)</span>, it means the current window meets the conditions. We then move the left boundary in a loop until the window no longer meets the conditions. At this point, all substrings ending at the right boundary <span class="arithmatex">\(\textit{r}\)</span> and with the left boundary in the range <span class="arithmatex">\([0, .. \textit{l} - 1]\)</span> meet the conditions, totaling <span class="arithmatex">\(\textit{l}\)</span> substrings. We add <span class="arithmatex">\(\textit{l}\)</span> to the answer. Continue traversing the string until the end, and we get <span class="arithmatex">\(\textit{f}(k)\)</span>.</p>
8697086970
<p>Finally, we return <span class="arithmatex">\(\textit{f}(k) - \textit{f}(k + 1)\)</span>.</p>
8697186971
<p>The time complexity is <span class="arithmatex">\(O(n)\)</span>, where <span class="arithmatex">\(n\)</span> is the length of the string <span class="arithmatex">\(\textit{word}\)</span>. The space complexity is <span class="arithmatex">\(O(1)\)</span>.</p>
86972-
<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>
86972+
<div class="tabbed-set tabbed-alternate" data-tabs="1:6"><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" /><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></div>
8697386973
<div class="tabbed-content">
8697486974
<div class="tabbed-block">
8697586975
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -87303,6 +87303,86 @@ <h3 id="solution-1-problem-transformation-sliding-window">Solution 1: Problem Tr
8730387303
<span class="p">}</span>
8730487304
</code></pre></div></td></tr></table></div>
8730587305
</div>
87306+
<div class="tabbed-block">
87307+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
87308+
<span class="normal"> 2</span>
87309+
<span class="normal"> 3</span>
87310+
<span class="normal"> 4</span>
87311+
<span class="normal"> 5</span>
87312+
<span class="normal"> 6</span>
87313+
<span class="normal"> 7</span>
87314+
<span class="normal"> 8</span>
87315+
<span class="normal"> 9</span>
87316+
<span class="normal">10</span>
87317+
<span class="normal">11</span>
87318+
<span class="normal">12</span>
87319+
<span class="normal">13</span>
87320+
<span class="normal">14</span>
87321+
<span class="normal">15</span>
87322+
<span class="normal">16</span>
87323+
<span class="normal">17</span>
87324+
<span class="normal">18</span>
87325+
<span class="normal">19</span>
87326+
<span class="normal">20</span>
87327+
<span class="normal">21</span>
87328+
<span class="normal">22</span>
87329+
<span class="normal">23</span>
87330+
<span class="normal">24</span>
87331+
<span class="normal">25</span>
87332+
<span class="normal">26</span>
87333+
<span class="normal">27</span>
87334+
<span class="normal">28</span>
87335+
<span class="normal">29</span>
87336+
<span class="normal">30</span>
87337+
<span class="normal">31</span>
87338+
<span class="normal">32</span>
87339+
<span class="normal">33</span>
87340+
<span class="normal">34</span>
87341+
<span class="normal">35</span>
87342+
<span class="normal">36</span>
87343+
<span class="normal">37</span>
87344+
<span class="normal">38</span>
87345+
<span class="normal">39</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>
87346+
<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">count_of_substrings</span><span class="p">(</span><span class="n">word</span><span class="p">:</span><span class="w"> </span><span class="nb">String</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
87347+
<span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">f</span><span class="p">(</span><span class="n">word</span><span class="p">:</span><span class="w"> </span><span class="kp">&amp;</span><span class="nb">Vec</span><span class="o">&lt;</span><span class="kt">char</span><span class="o">&gt;</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
87348+
<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="p">;</span>
87349+
<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">l</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
87350+
<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">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
87351+
<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="n">std</span><span class="p">::</span><span class="n">collections</span><span class="p">::</span><span class="n">HashMap</span><span class="p">::</span><span class="n">new</span><span class="p">();</span>
87352+
87353+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">is_vowel</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">|</span><span class="n">c</span><span class="p">:</span><span class="w"> </span><span class="kt">char</span><span class="o">|</span><span class="w"> </span><span class="fm">matches!</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="w"> </span><span class="sc">&#39;a&#39;</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="sc">&#39;e&#39;</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="sc">&#39;i&#39;</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="sc">&#39;o&#39;</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="sc">&#39;u&#39;</span><span class="p">);</span>
87354+
87355+
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">r</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">c</span><span class="p">)</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">word</span><span class="p">.</span><span class="n">iter</span><span class="p">().</span><span class="n">enumerate</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
87356+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">is_vowel</span><span class="p">(</span><span class="n">c</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87357+
<span class="w"> </span><span class="o">*</span><span class="n">cnt</span><span class="p">.</span><span class="n">entry</span><span class="p">(</span><span class="n">c</span><span class="p">).</span><span class="n">or_insert</span><span class="p">(</span><span class="mi">0</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>
87358+
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
87359+
<span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
87360+
<span class="w"> </span><span class="p">}</span>
87361+
87362+
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">cnt</span><span class="p">.</span><span class="n">len</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="p">{</span>
87363+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">word</span><span class="p">[</span><span class="n">l</span><span class="p">];</span>
87364+
<span class="w"> </span><span class="n">l</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
87365+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">is_vowel</span><span class="p">(</span><span class="n">d</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87366+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">count</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">entry</span><span class="p">(</span><span class="n">d</span><span class="p">).</span><span class="n">or_insert</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
87367+
<span class="w"> </span><span class="o">*</span><span class="n">count</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
87368+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">*</span><span class="n">count</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span>
87369+
<span class="w"> </span><span class="n">cnt</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="o">&amp;</span><span class="n">d</span><span class="p">);</span>
87370+
<span class="w"> </span><span class="p">}</span>
87371+
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
87372+
<span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
87373+
<span class="w"> </span><span class="p">}</span>
87374+
<span class="w"> </span><span class="p">}</span>
87375+
<span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">l</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="kt">i32</span><span class="p">;</span>
87376+
<span class="w"> </span><span class="p">}</span>
87377+
<span class="w"> </span><span class="n">ans</span>
87378+
<span class="w"> </span><span class="p">}</span>
87379+
87380+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">chars</span><span class="p">:</span><span class="w"> </span><span class="nb">Vec</span><span class="o">&lt;</span><span class="kt">char</span><span class="o">&gt;</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">word</span><span class="p">.</span><span class="n">chars</span><span class="p">().</span><span class="n">collect</span><span class="p">();</span>
87381+
<span class="w"> </span><span class="n">f</span><span class="p">(</span><span class="o">&amp;</span><span class="n">chars</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">f</span><span class="p">(</span><span class="o">&amp;</span><span class="n">chars</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
87382+
<span class="w"> </span><span class="p">}</span>
87383+
<span class="p">}</span>
87384+
</code></pre></div></td></tr></table></div>
87385+
</div>
8730687386
</div>
8730787387
</div>
8730887388
<!-- solution:end -->

0 commit comments

Comments
 (0)