<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Mr.OC&#39;s Blogger</title>
    <link>https://xxoc.top/</link>
    <description>Recent content on Mr.OC&#39;s Blogger</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Wed, 12 Aug 2026 00:00:00 +0800</lastBuildDate>
    <atom:link href="https://xxoc.top/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title> AI 使用的一些体验和想法</title>
      <link>https://xxoc.top/posts/ai%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C/</link>
      <pubDate>Wed, 12 Aug 2026 00:00:00 +0800</pubDate>
      <guid>https://xxoc.top/posts/ai%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C/</guid>
      <description>&lt;h1 id=&#34;我这段时间使用-ai-的一些体验和想法&#34;&gt;我这段时间使用 AI 的一些体验和想法&lt;/h1&gt;
&lt;h2 id=&#34;引言&#34;&gt;引言&lt;/h2&gt;
&lt;p&gt;目前各位同学对于 AI 应该都不陌生了，但是想要真正会使用 AI，我觉得我们还是都应该学习一下。&lt;/p&gt;
&lt;p&gt;这篇文章我就想详细讲一讲我这段时间的 AI 使用体验，以及我对 AI 的一些期待，不同模型用下来有什么感受，还有一些关于 Agent 的想法。&lt;/p&gt;
&lt;p&gt;可能有些地方会比较主观，毕竟这些都是我自己用下来的感受，大家就当作一个分享来看就好。&lt;/p&gt;
&lt;h2 id=&#34;1-错误的使用场景&#34;&gt;1. 错误的使用场景&lt;/h2&gt;
&lt;p&gt;你给出问题，AI 给出答案，Ctrl C 和 Ctrl V 一下，问题解决。&lt;/p&gt;
&lt;p&gt;这是最典型的使用，也是最无脑的。&lt;/p&gt;
&lt;p&gt;我常常会在学校里听到有人抱怨豆包这么&amp;quot;蠢&amp;quot;，提交了好几次还是 WA，但是他们并没有自己去看问题到底在哪里，也没有想着自己找一找原因，更没有想一想这个代码为什么要这样写。&lt;/p&gt;
&lt;p&gt;用 AI 没错，让它写代码也没错，可是不能没有思考地接受。还是得自己吸收，再加以利用。&lt;/p&gt;
&lt;p&gt;我平时最常使用的就是 DeepSeek 的网页版，它可以解决一些不太复杂的题目，也可以回答日常生活中出现的问题。当我没有思路的时候，我也会找它帮我出谋划策。&lt;/p&gt;
&lt;p&gt;写这篇文章的时候其实我也是这么做的。最开始我只是有这样一个想法：我想写一篇关于 AI 使用体验的文章，但是没有很具体的思路。我就把自己的想法告诉了 DS，它很快帮我列出了一份大致的思路，然后我继续补充、修改，最终才有了现在这篇文章。&lt;/p&gt;
&lt;p&gt;举一个我在视频里面看到的例子。&lt;/p&gt;
&lt;p&gt;当我们写一个最简单的&amp;quot;输入一个数字，判断这个数字在不在数组里面&amp;quot;的时候，你有什么思路？&lt;/p&gt;
&lt;p&gt;第一步，定义数组。&lt;/p&gt;
&lt;p&gt;第二步，从键盘输入一个数。&lt;/p&gt;
&lt;p&gt;第三步，把这个数和数组里面的每一个元素一一比较，如果找到了，就输出 yes，没有就输出 no。&lt;/p&gt;
&lt;p&gt;思路很简单吧？&lt;/p&gt;
&lt;p&gt;假设你不知道怎么写代码，你完全可以把这几步先自己想好，然后让 AI 去完成每一步的代码。写完以后你再去看，为什么要这么写。&lt;/p&gt;
&lt;p&gt;在你已经有思路的前提下，再去看代码其实会轻松很多。&lt;/p&gt;
&lt;p&gt;假设你连 for 循环都不知道怎么写，那就直接问。问它为什么这样写，又比如这里为什么要用 break，为什么必须放在这里，不能放在大括号外面。&lt;/p&gt;
&lt;p&gt;是吧，这样一来是不是就清楚很多了？&lt;/p&gt;
&lt;p&gt;学习效率也会高很多。&lt;/p&gt;
&lt;p&gt;这只是一个最简单的例子，我主要还是想告诉大家：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;不要对 AI 直接索取答案。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;2-我关于-ai-的一些想法&#34;&gt;2. 我关于 AI 的一些想法&lt;/h2&gt;
&lt;p&gt;对于我来说，最开始 AI 能生成一整套方案，甚至直接把代码写出来。它把原本写代码的时间，变成了构思提示词和反复验证的时间。&lt;/p&gt;
&lt;p&gt;这个过程中，其实我也有一个从依赖到质疑的过程。&lt;/p&gt;
&lt;p&gt;最开始是只有我把程序提交上去，出现报错以后，我才能发现问题。&lt;/p&gt;</description>
    </item>
    <item>
      <title>大于等于序列前缀和的最小缺失整数</title>
      <link>https://xxoc.top/posts/%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E5%BA%8F%E5%88%97%E5%89%8D%E7%BC%80%E5%92%8C%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BC%BA%E5%A4%B1%E6%95%B4%E6%95%B0/</link>
      <pubDate>Tue, 11 Aug 2026 10:30:00 +0800</pubDate>
      <guid>https://xxoc.top/posts/%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E5%BA%8F%E5%88%97%E5%89%8D%E7%BC%80%E5%92%8C%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BC%BA%E5%A4%B1%E6%95%B4%E6%95%B0/</guid>
      <description>&lt;h1 id=&#34;大于等于序列前缀和的最小缺失整数&#34;&gt;大于等于序列前缀和的最小缺失整数&lt;/h1&gt;
&lt;h2 id=&#34;题目描述&#34;&gt;题目描述&lt;/h2&gt;
&lt;p&gt;给你一个下标从 &lt;strong&gt;0&lt;/strong&gt; 开始的整数数组 &lt;code&gt;nums&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果一个前缀 &lt;code&gt;nums[0..i]&lt;/code&gt; 满足：对于 &lt;code&gt;1 &amp;lt;= j &amp;lt;= i&lt;/code&gt; 的所有元素都有 &lt;code&gt;nums[j] = nums[j - 1] + 1&lt;/code&gt;，那么我们称这个前缀是一个 &lt;strong&gt;顺序前缀&lt;/strong&gt;。特殊情况是，只包含 &lt;code&gt;nums[0]&lt;/code&gt; 的前缀（也就是 &lt;code&gt;nums[0..0]&lt;/code&gt;）也是一个 &lt;strong&gt;顺序前缀&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;请你返回 &lt;code&gt;nums&lt;/code&gt; 中没有出现过的 &lt;strong&gt;最小&lt;/strong&gt; 整数 &lt;code&gt;x&lt;/code&gt;，满足 &lt;code&gt;x&lt;/code&gt; &lt;strong&gt;大于等于&lt;/strong&gt; &lt;strong&gt;最长&lt;/strong&gt; 顺序前缀的 &lt;strong&gt;和&lt;/strong&gt;。（力扣 2996）&lt;/p&gt;
&lt;h2 id=&#34;先别急着写代码把题目看懂&#34;&gt;先别急着写代码，把题目看懂&lt;/h2&gt;
&lt;p&gt;这题考察的其实不是算法有多难，而是&lt;strong&gt;你读题读得够不够细&lt;/strong&gt;。很多同学一上来就懵，觉得这不就是个&amp;quot;找缺失整数&amp;quot;吗？其实坑藏在&amp;quot;前缀&amp;quot;和&amp;quot;最长&amp;quot;这两个词里。&lt;/p&gt;
&lt;h3 id=&#34;坑一什么是顺序前缀必须从下标-0-开始&#34;&gt;坑一：什么是&amp;quot;顺序前缀&amp;quot;？——必须从下标 0 开始&lt;/h3&gt;
&lt;p&gt;先看一个具体例子，比如输入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ums = [3, 4, 5, 1, 12, 14, 13]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;很多人第一反应是：哎，&lt;code&gt;12, 13, 14&lt;/code&gt; 不也是连续的（每个都比前一个大 1）吗？怎么最长顺序前缀不是它们？&lt;/p&gt;
&lt;p&gt;这里就是最容易踩的坑！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;前缀&amp;rdquo;（prefix）的定义，是从 &lt;code&gt;nums[0]&lt;/code&gt; 开始、连续的一段。&lt;/strong&gt; 前缀永远要从数组的第一个元素 &lt;code&gt;nums[0]&lt;/code&gt; 出发：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nums[0..0] = [3]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nums[0..1] = [3, 4]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nums[0..2] = [3, 4, 5]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nums[0..3] = [3, 4, 5, 1]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而 &lt;code&gt;12, 13, 14&lt;/code&gt; 虽然在数组里彼此连续，但它们&lt;strong&gt;不是从 &lt;code&gt;nums[0]&lt;/code&gt; 开始的&lt;/strong&gt;，所以它们根本&lt;strong&gt;不叫&amp;quot;前缀&amp;quot;&lt;/strong&gt;，直接被排除掉。&lt;/p&gt;</description>
    </item>
    <item>
      <title>最小回文序列的排列 I</title>
      <link>https://xxoc.top/posts/%E6%9C%80%E5%B0%8F%E5%9B%9E%E6%96%87%E6%8E%92%E5%88%97-i-/</link>
      <pubDate>Mon, 10 Aug 2026 22:16:28 +0800</pubDate>
      <guid>https://xxoc.top/posts/%E6%9C%80%E5%B0%8F%E5%9B%9E%E6%96%87%E6%8E%92%E5%88%97-i-/</guid>
      <description>&lt;h1 id=&#34;最小回文排列的解法&#34;&gt;最小回文排列的解法&lt;/h1&gt;
&lt;h2 id=&#34;题目描述&#34;&gt;题目描述&lt;/h2&gt;
&lt;p&gt;给你一个&lt;strong&gt;回文&lt;/strong&gt;字符串 s，返回它的&lt;strong&gt;按字典序最小的回文排列&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;回文：从前往后和从后往前读都一样。&lt;/li&gt;
&lt;li&gt;排列：字符串中所有字符的重排。&lt;/li&gt;
&lt;li&gt;字典序：从第一个字符开始比，谁先小谁就小；前面对完都一样，短的更小。（力扣 3517）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;解决方法&#34;&gt;解决方法&lt;/h2&gt;
&lt;h3 id=&#34;1-常见的想法&#34;&gt;1. 常见的想法&lt;/h3&gt;
&lt;p&gt;把所有回文排列都列出来，排个序，取第一个？No，能解决，但是——&lt;/p&gt;
&lt;p&gt;给你二十个字符串让你全排列，你不崩溃，计算机也要崩溃了。暴力当然可解，前提是数据量够小。&lt;/p&gt;
&lt;h3 id=&#34;2-换个思路只看一半&#34;&gt;2. 换个思路：只看一半&lt;/h3&gt;
&lt;p&gt;既然是回文，左右两半肯定一样，我们只关心一半就行。&lt;/p&gt;
&lt;p&gt;那先统计每个字母出现了几次，一个循环搞定。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;nl&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 遍历 s，把每个字符转成 0~25 的索引，计数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;每个字符都至少出现两次？No——&lt;strong&gt;出现奇数次的字符只能有一个&lt;/strong&gt;（它正好放正中间）。比如 &lt;code&gt;ababa&lt;/code&gt;：a 出现 3 次，b 出现 2 次，拿一个 a 当中间，剩下两个 a 两个 b。&lt;/p&gt;
&lt;h3 id=&#34;3-拼出左半部分&#34;&gt;3. 拼出左半部分&lt;/h3&gt;
&lt;p&gt;把每个字符频次的一半按字母序拼起来，得到左半部分 &lt;code&gt;half&lt;/code&gt;，顺便记下中间那个奇数字符。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;half&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;half&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// 频次一半个 &amp;#39;a&amp;#39;+i 拼进 half
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 奇数次的那个字符当中间
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样 &lt;code&gt;half&lt;/code&gt; 天然就是字典序最小的左半部分。&lt;/p&gt;
&lt;h3 id=&#34;4-生成右半部分&#34;&gt;4. 生成右半部分&lt;/h3&gt;
&lt;p&gt;把 &lt;code&gt;half&lt;/code&gt; 反转就是右半部分，回文就拼成了。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;right&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;half&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reverse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;half&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 有中间字符
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;half&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;                &lt;span class=&#34;c1&#34;&gt;// 没有中间字符
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;完整代码如下&#34;&gt;完整代码如下&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;namespace&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Solution&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;smallestPalindrome&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;nl&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;half&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;half&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;right&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;half&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;reverse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;half&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;half&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>最小回文序列的排列 II</title>
      <link>https://xxoc.top/posts/%E6%9C%80%E5%B0%8F%E5%9B%9E%E6%96%87%E6%8E%92%E5%88%97-ii/</link>
      <pubDate>Mon, 10 Aug 2026 22:16:28 +0800</pubDate>
      <guid>https://xxoc.top/posts/%E6%9C%80%E5%B0%8F%E5%9B%9E%E6%96%87%E6%8E%92%E5%88%97-ii/</guid>
      <description>&lt;h1 id=&#34;第-k-小的最小回文排列进阶版&#34;&gt;第 K 小的最小回文排列（进阶版）&lt;/h1&gt;
&lt;h2 id=&#34;题目描述&#34;&gt;题目描述&lt;/h2&gt;
&lt;p&gt;这是上一篇《最小回文排列 I》的进阶版。上一篇只要最小的那个回文排列，这一篇要&lt;strong&gt;第 k 小的&lt;/strong&gt;那个。&lt;/p&gt;
&lt;p&gt;给你一个&lt;strong&gt;回文&lt;/strong&gt;字符串 s 和一个整数 k，返回 s 的所有&lt;strong&gt;回文排列&lt;/strong&gt;中&lt;strong&gt;按字典序第 k 小&lt;/strong&gt;的那个；如果不存在第 k 个，返回空字符串 &lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;回文、排列、字典序这些概念上一篇讲过，不懂先去看上一篇，这里不重复了。（力扣 3518）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;解决方法&#34;&gt;解决方法&lt;/h2&gt;
&lt;h3 id=&#34;1-还是老套路只看一半&#34;&gt;1. 还是老套路：只看一半&lt;/h3&gt;
&lt;p&gt;上一篇说过，回文左右两半一样，所以问题就变成了——&lt;strong&gt;求半边串的第 k 个排列&lt;/strong&gt;。这一步完全一样，不重复讲了。&lt;/p&gt;
&lt;p&gt;但是！！上一篇只取&lt;strong&gt;最小&lt;/strong&gt;那个，直接从小到大拼 &lt;code&gt;half&lt;/code&gt; 就行。这一篇要&lt;strong&gt;第 k 个&lt;/strong&gt;，那排序不能偷懒了，得自己动手算排列数。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;所以核心难点就一个：怎么在不去重、不暴力全排列的情况下，算出&amp;quot;以某个字符开头一共有多少种排列&amp;quot;。&lt;/strong&gt; 下面重点讲这个。&lt;/p&gt;
&lt;h3 id=&#34;2-统计频次--检查可行性跟上一篇一样&#34;&gt;2. 统计频次 + 检查可行性（跟上一篇一样）&lt;/h3&gt;
&lt;p&gt;老规矩，先数每个字母出现几次，检查能不能构成回文（奇数次字符最多一个）。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;nl&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// 统计每个字符出现的次数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 检查可行性：最多只能有一个字符出现奇数次
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;oddCount&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;midChar&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;oddCount&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;midChar&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// 记录中间字符
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;oddCount&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// 超过一个奇数次，无法构成回文
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;3-构建半边串的频次跟上一篇一样&#34;&gt;3. 构建半边串的频次（跟上一篇一样）&lt;/h3&gt;
&lt;p&gt;回文 = 左半边 + （中间字符） + 左半边反转，所以只需要排列左半边。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;halfCnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// 半边串里每个字符出现的次数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;total&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;halfCnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// 每个字符取一半
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;n&#34;&gt;total&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;halfCnt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;// 半边串的总长度
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;4-排列数怎么算新知识重点&#34;&gt;4. 排列数怎么算？（新知识，重点！）&lt;/h3&gt;
&lt;p&gt;现在要算：&lt;strong&gt;用这些字母（可能有重复）能排成多少种不同的串？&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>vscode里面初次使用git报错</title>
      <link>https://xxoc.top/posts/aboutgit/</link>
      <pubDate>Fri, 24 Jul 2026 15:33:28 +0800</pubDate>
      <guid>https://xxoc.top/posts/aboutgit/</guid>
      <description>&lt;h1 id=&#34;vs-code-初次使用-git-出现make-sure-you-configure-your-username-and-useremail-in-git&#34;&gt;VS Code 初次使用 Git 出现：“Make sure you configure your &amp;ldquo;user.name&amp;rdquo; and &amp;ldquo;user.email&amp;rdquo; in git.”&lt;/h1&gt;
&lt;h2 id=&#34;1-突然出现的拦截&#34;&gt;1. 突然出现的拦截&lt;/h2&gt;
&lt;p&gt;很多刚开始接触编程或者刚换了新电脑的朋友，在 VS Code 里愉快地敲完代码，准备按下“提交（Commit）”按钮记录自己的伟大成果时，往往会猝不及防地遇到一个报错提示框，或者在输出面板看到类似下面这样的一段红字：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Make sure you configure your &amp;#34;user.name&amp;#34; and &amp;#34;user.email&amp;#34; in git.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;Git 报错截图&#34; loading=&#34;lazy&#34; src=&#34;https://xxoc.top/images/git%E6%8A%A5%E9%94%99.png&#34;&gt;
不用慌，这不是你的代码写错了，而是 Git 跟你“互不相识”。&lt;/p&gt;
&lt;h2 id=&#34;2-为什么会出现这个问题&#34;&gt;2. 为什么会出现这个问题？&lt;/h2&gt;
&lt;p&gt;git的核心机制就是知道你是谁、你在干嘛（版本控制器），所以当git不知道你的信息，他就没办法工作。
这时候就需要把你的信息输入给git.&lt;/p&gt;
&lt;h2 id=&#34;3-三步解决告诉-git-你是谁&#34;&gt;3. 三步解决：告诉 Git 你是谁&lt;/h2&gt;
&lt;p&gt;解决这个问题非常简单，只需要两行命令。由于我们是在 VS Code 里写代码，整个过程完全不需要切出编辑器。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;步骤一：唤出 VS Code 终端&lt;/strong&gt;
在 VS Code 中，你可以通过快捷键 &lt;code&gt;Ctrl` + \` &lt;/code&gt;（数字 1 左边的那个按键）快速打开底部集成终端；或者在顶部菜单栏选择“终端 (Terminal)” -&amp;gt; “新建终端 (New Terminal)”。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;步骤二：输入配置命令&lt;/strong&gt;
在终端的命令行窗口中，依次输入以下两行命令并回车：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global user.name &lt;span class=&#34;s2&#34;&gt;&amp;#34;你的名字或昵称&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global user.email &lt;span class=&#34;s2&#34;&gt;&amp;#34;你的邮箱@example.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;💡 提示：这里的 &lt;code&gt;--global&lt;/code&gt; 参数表示“全局配置”。也就是说，你只要在你的电脑上配置这一次，以后不管你在哪个文件夹建什么新项目，Git 都会默认使用这个身份。&lt;/em&gt;
&lt;em&gt;如果没有global呢？&lt;/em&gt;
&lt;em&gt;如果没有global就代表这个git的改变只能在当前仓库使用，如果下一次在其他仓库提交还是需要再次设置。所以一般为了方便使用，大多都直接用global。&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://xxoc.top/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://xxoc.top/about/</guid>
      <description>&lt;p&gt;Hello, I am Guangheng Xiao, a student from Wuhan University of Science and Technology.And my major is Computer Science and Technology.&lt;/p&gt;
&lt;h2 id=&#34;about-this-bloger&#34;&gt;About this bloger&lt;/h2&gt;
&lt;p&gt;Here I record my notes, mistakes I made and some thoughts during my learning process&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;contact-me&#34;&gt;Contact Me&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Email: &lt;a href=&#34;mailto:guanghengxiao@outloook.com&#34;&gt;guanghengxiao@outloook.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href=&#34;https://github.com/Xiao-Guangheng&#34;&gt;Xiao-Guangheng&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
