mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
73 lines
3.5 KiB
HTML
73 lines
3.5 KiB
HTML
<p>给你一个下标从 <strong>0</strong> 开始的字符串 <code>s</code> 和一个整数 <code>k</code>。</p>
|
||
|
||
<p>你需要执行以下分割操作,直到字符串 <code>s </code>变为 <strong>空</strong>:</p>
|
||
|
||
<ul>
|
||
<li>选择 <code>s</code> 的最长<strong>前缀</strong>,该前缀最多包含 <code>k </code>个 <strong>不同 </strong>字符。</li>
|
||
<li><strong>删除 </strong>这个前缀,并将分割数量加一。如果有剩余字符,它们在 <code>s</code> 中保持原来的顺序。</li>
|
||
</ul>
|
||
|
||
<p>执行操作之 <strong>前</strong> ,你可以将 <code>s</code> 中 <strong>至多一处 </strong>下标的对应字符更改为另一个小写英文字母。</p>
|
||
|
||
<p>在最优选择情形下改变至多一处下标对应字符后,用整数表示并返回操作结束时得到的最大分割数量。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong class="example">示例 1:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>s = "accca", k = 2
|
||
<strong>输出:</strong>3
|
||
<strong>解释:</strong>在此示例中,为了最大化得到的分割数量,可以将 s[2] 改为 'b'。
|
||
s 变为 "acbca"。
|
||
按照以下方式执行操作,直到 s 变为空:
|
||
- 选择最长且至多包含 2 个不同字符的前缀,"<em><strong>ac</strong></em>bca"。
|
||
- 删除该前缀,s 变为 "bca"。现在分割数量为 1。
|
||
- 选择最长且至多包含 2 个不同字符的前缀,"<em><strong>bc</strong></em>a"。
|
||
- 删除该前缀,s 变为 "a"。现在分割数量为 2。
|
||
- 选择最长且至多包含 2 个不同字符的前缀,"<strong><em>a</em></strong>"。
|
||
- 删除该前缀,s 变为空。现在分割数量为 3。
|
||
因此,答案是 3。
|
||
可以证明,分割数量不可能超过 3。</pre>
|
||
|
||
<p><strong class="example">示例 2:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>s = "aabaab", k = 3
|
||
<strong>输出:</strong>1
|
||
<strong>解释:</strong>在此示例中,为了最大化得到的分割数量,可以保持 s 不变。
|
||
按照以下方式执行操作,直到 s 变为空:
|
||
- 选择最长且至多包含 3 个不同字符的前缀,"<em><strong>aabaab</strong></em>"。
|
||
- 删除该前缀,s 变为空。现在分割数量为 1。
|
||
因此,答案是 1。
|
||
可以证明,分割数量不可能超过 1。</pre>
|
||
|
||
<p><strong class="example">示例 3:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>s = "xxyz", k = 1
|
||
<strong>输出:</strong>4
|
||
<strong>解释:</strong>在此示例中,为了最大化得到的分割数量,可以将 s[1] 改为 'a'。
|
||
s 变为 "xayz"。
|
||
按照以下方式执行操作,直到 s 变为空:
|
||
- 选择最长且至多包含 1 个不同字符的前缀,"<em><strong>x</strong></em>ayz"。
|
||
- 删除该前缀,s 变为 "ayz"。现在分割数量为 1。
|
||
- 选择最长且至多包含 1 个不同字符的前缀,"<em><strong>a</strong></em>yz"。
|
||
- 删除该前缀,s 变为 "yz",现在分割数量为 2。
|
||
- 选择最长且至多包含 1 个不同字符的前缀,"<em><strong>y</strong></em>z"。
|
||
- 删除该前缀,s 变为 "z"。现在分割数量为 3。
|
||
- 选择最且至多包含 1 个不同字符的前缀,"<em>z</em>"。
|
||
- 删除该前缀,s 变为空。现在分割数量为 4。
|
||
因此,答案是 4。
|
||
可以证明,分割数量不可能超过 4。</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>1 <= s.length <= 10<sup>4</sup></code></li>
|
||
<li><code>s</code> 只包含小写英文字母。</li>
|
||
<li><code>1 <= k <= 26</code></li>
|
||
</ul>
|