@@ -81544,7 +81544,7 @@ <h2 id="_2">解法</h2>
81544
81544
<h3 id="_3">方法一:前缀树</h3>
81545
81545
<p>题目大意:充分利用重叠的后缀,使有效编码尽可能短。</p>
81546
81546
<p>判断当前单词是否是其他单词的后缀,若是,就不用写入助记字符串中,否则需要写入并且加上一个 # 后缀。</p>
81547
- <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>
81547
+ <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">Swift </label></div>
81548
81548
<div class="tabbed-content">
81549
81549
<div class="tabbed-block">
81550
81550
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -81810,6 +81810,88 @@ <h3 id="_3">方法一:前缀树</h3>
81810
81810
<span class="p">}</span>
81811
81811
</code></pre></div></td></tr></table></div>
81812
81812
</div>
81813
+ <div class="tabbed-block">
81814
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
81815
+ <span class="normal"> 2</span>
81816
+ <span class="normal"> 3</span>
81817
+ <span class="normal"> 4</span>
81818
+ <span class="normal"> 5</span>
81819
+ <span class="normal"> 6</span>
81820
+ <span class="normal"> 7</span>
81821
+ <span class="normal"> 8</span>
81822
+ <span class="normal"> 9</span>
81823
+ <span class="normal">10</span>
81824
+ <span class="normal">11</span>
81825
+ <span class="normal">12</span>
81826
+ <span class="normal">13</span>
81827
+ <span class="normal">14</span>
81828
+ <span class="normal">15</span>
81829
+ <span class="normal">16</span>
81830
+ <span class="normal">17</span>
81831
+ <span class="normal">18</span>
81832
+ <span class="normal">19</span>
81833
+ <span class="normal">20</span>
81834
+ <span class="normal">21</span>
81835
+ <span class="normal">22</span>
81836
+ <span class="normal">23</span>
81837
+ <span class="normal">24</span>
81838
+ <span class="normal">25</span>
81839
+ <span class="normal">26</span>
81840
+ <span class="normal">27</span>
81841
+ <span class="normal">28</span>
81842
+ <span class="normal">29</span>
81843
+ <span class="normal">30</span>
81844
+ <span class="normal">31</span>
81845
+ <span class="normal">32</span>
81846
+ <span class="normal">33</span>
81847
+ <span class="normal">34</span>
81848
+ <span class="normal">35</span>
81849
+ <span class="normal">36</span>
81850
+ <span class="normal">37</span>
81851
+ <span class="normal">38</span>
81852
+ <span class="normal">39</span>
81853
+ <span class="normal">40</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span> <span class="nc">Trie</span> <span class="p">{</span>
81854
+ <span class="kd">var</span> <span class="nv">children</span> <span class="p">=</span> <span class="p">[</span><span class="n">Trie</span><span class="p">?](</span><span class="n">repeating</span><span class="p">:</span> <span class="kc">nil</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">26</span><span class="p">)</span>
81855
+ <span class="p">}</span>
81856
+
81857
+ <span class="kd">class</span> <span class="nc">Solution</span> <span class="p">{</span>
81858
+ <span class="kd">func</span> <span class="nf">minimumLengthEncoding</span><span class="p">(</span><span class="kc">_</span> <span class="n">words</span><span class="p">:</span> <span class="p">[</span><span class="nb">String</span><span class="p">])</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
81859
+ <span class="kd">let</span> <span class="nv">root</span> <span class="p">=</span> <span class="n">Trie</span><span class="p">()</span>
81860
+
81861
+ <span class="k">for</span> <span class="n">word</span> <span class="k">in</span> <span class="n">words</span> <span class="p">{</span>
81862
+ <span class="kd">var</span> <span class="nv">current</span> <span class="p">=</span> <span class="n">root</span>
81863
+ <span class="k">for</span> <span class="n">char</span> <span class="k">in</span> <span class="n">word</span><span class="p">.</span><span class="n">reversed</span><span class="p">()</span> <span class="p">{</span>
81864
+ <span class="kd">let</span> <span class="nv">index</span> <span class="p">=</span> <span class="nb">Int</span><span class="p">(</span><span class="n">char</span><span class="p">.</span><span class="n">asciiValue</span><span class="p">!</span> <span class="o">-</span> <span class="nb">Character</span><span class="p">(</span><span class="s">"a"</span><span class="p">).</span><span class="n">asciiValue</span><span class="p">!)</span>
81865
+ <span class="k">if</span> <span class="n">current</span><span class="p">.</span><span class="n">children</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="p">==</span> <span class="kc">nil</span> <span class="p">{</span>
81866
+ <span class="n">current</span><span class="p">.</span><span class="n">children</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="p">=</span> <span class="n">Trie</span><span class="p">()</span>
81867
+ <span class="p">}</span>
81868
+ <span class="n">current</span> <span class="p">=</span> <span class="n">current</span><span class="p">.</span><span class="n">children</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="o">!</span>
81869
+ <span class="p">}</span>
81870
+ <span class="p">}</span>
81871
+
81872
+ <span class="k">return</span> <span class="n">dfs</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
81873
+ <span class="p">}</span>
81874
+
81875
+ <span class="kd">private</span> <span class="kd">func</span> <span class="nf">dfs</span><span class="p">(</span><span class="kc">_</span> <span class="n">current</span><span class="p">:</span> <span class="n">Trie</span><span class="p">,</span> <span class="kc">_</span> <span class="n">length</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
81876
+ <span class="kd">var</span> <span class="nv">isLeaf</span> <span class="p">=</span> <span class="kc">true</span>
81877
+ <span class="kd">var</span> <span class="nv">result</span> <span class="p">=</span> <span class="mi">0</span>
81878
+
81879
+ <span class="k">for</span> <span class="n">child</span> <span class="k">in</span> <span class="n">current</span><span class="p">.</span><span class="n">children</span> <span class="p">{</span>
81880
+ <span class="k">if</span> <span class="kd">let</span> <span class="nv">child</span> <span class="p">=</span> <span class="n">child</span> <span class="p">{</span>
81881
+ <span class="n">isLeaf</span> <span class="p">=</span> <span class="kc">false</span>
81882
+ <span class="n">result</span> <span class="o">+=</span> <span class="n">dfs</span><span class="p">(</span><span class="n">child</span><span class="p">,</span> <span class="n">length</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
81883
+ <span class="p">}</span>
81884
+ <span class="p">}</span>
81885
+
81886
+ <span class="k">if</span> <span class="n">isLeaf</span> <span class="p">{</span>
81887
+ <span class="n">result</span> <span class="o">+=</span> <span class="n">length</span>
81888
+ <span class="p">}</span>
81889
+
81890
+ <span class="k">return</span> <span class="n">result</span>
81891
+ <span class="p">}</span>
81892
+ <span class="p">}</span>
81893
+ </code></pre></div></td></tr></table></div>
81894
+ </div>
81813
81895
</div>
81814
81896
</div>
81815
81897
<!-- solution:end -->
@@ -82096,6 +82178,11 @@ <h3 id="_4">方法二</h3>
82096
82178
82097
82179
<nav>
82098
82180
82181
+ <a href="https://github.com/klever34" class="md-author" title="@klever34">
82182
+
82183
+ <img src="https://avatars.githubusercontent.com/u/12745225?v=4&size=72" alt="klever34">
82184
+ </a>
82185
+
82099
82186
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
82100
82187
82101
82188
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
0 commit comments