12608
12608
<ul class="md-nav__list">
12609
12609
12610
12610
<li class="md-nav__item">
12611
- <a href="#solution-1" class="md-nav__link">
12611
+ <a href="#solution-1-counting " class="md-nav__link">
12612
12612
<span class="md-ellipsis">
12613
- Solution 1
12613
+ Solution 1: Counting
12614
12614
</span>
12615
12615
</a>
12616
12616
@@ -77933,7 +77933,9 @@ <h2 id="description">Description</h2>
77933
77933
<h2 id="solutions">Solutions</h2>
77934
77934
<!-- solution:start -->
77935
77935
77936
- <h3 id="solution-1">Solution 1</h3>
77936
+ <h3 id="solution-1-counting">Solution 1: Counting</h3>
77937
+ <p>If a string is a palindrome, at most one character can appear an odd number of times, while all other characters must appear an even number of times. Therefore, we only need to count the occurrences of each character and then check if this condition is satisfied.</p>
77938
+ <p>Time complexity is $O(n)$, and space complexity is $O(|\Sigma|)$. Here, $n$ is the length of the string, and $|\Sigma|$ is the size of the character set. In this problem, the character set consists of lowercase letters, so $|\Sigma|=26$.</p>
77937
77939
<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">JavaScript</label></div>
77938
77940
<div class="tabbed-content">
77939
77941
<div class="tabbed-block">
@@ -78034,7 +78036,7 @@ <h3 id="solution-1">Solution 1</h3>
78034
78036
<span class="normal">5</span>
78035
78037
<span class="normal">6</span>
78036
78038
<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">canPermutePalindrome</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">boolean</span><span class="w"> </span><span class="p">{</span>
78037
- <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">number</span><span class="p">[]</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>
78039
+ <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">number</span><span class="p">[]</span><span class="w"> </span><span class="o">=</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>
78038
78040
<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>
78039
78041
<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="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>
78040
78042
<span class="w"> </span><span class="p">}</span>
@@ -78058,11 +78060,11 @@ <h3 id="solution-1">Solution 1</h3>
78058
78060
<span class="cm"> * @return {boolean}</span>
78059
78061
<span class="cm"> */</span>
78060
78062
<span class="kd">var</span><span class="w"> </span><span class="nx">canPermutePalindrome</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>
78061
- <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>
78063
+ <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>
78062
78064
<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>
78063
- <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>
78065
+ <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>
78064
78066
<span class="w"> </span><span class="p">}</span>
78065
- <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">cnt</span><span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="nx">c </span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="nx">c </span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">1</span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span>
78067
+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[...</span><span class=" nx">cnt</span><span class="p">.</span><span class="nx">values</span><span class="p">()].</span><span class="nx"> filter</span><span class="p">(</span><span class="nx">v </span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="nx">v </span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="mf">1</span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span>
78066
78068
<span class="p">};</span>
78067
78069
</code></pre></div></td></tr></table></div>
78068
78070
</div>
0 commit comments