mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
62 lines
3.8 KiB
HTML
62 lines
3.8 KiB
HTML
<p>给你一个字符串 <code>s</code> 。<code>s[i]</code> 要么是小写英文字母,要么是问号 <code>'?'</code> 。</p>
|
||
|
||
<p>对于长度为 <code>m</code> 且 <strong>只</strong> 含有小写英文字母的字符串 <code>t</code> ,我们定义函数 <code>cost(i)</code> 为下标 <code>i</code> 之前(也就是范围 <code>[0, i - 1]</code> 中)出现过与 <code>t[i]</code> <strong>相同</strong> 字符出现的次数。</p>
|
||
|
||
<p>字符串 <code>t</code> 的 <strong>分数</strong> 为所有下标 <code>i</code> 的 <code>cost(i)</code> 之 <strong>和</strong> 。</p>
|
||
|
||
<p>比方说,字符串 <code>t = "aab"</code> :</p>
|
||
|
||
<ul>
|
||
<li><code>cost(0) = 0</code></li>
|
||
<li><code>cost(1) = 1</code></li>
|
||
<li><code>cost(2) = 0</code></li>
|
||
<li>所以,字符串 <code>"aab"</code> 的分数为 <code>0 + 1 + 0 = 1</code> 。</li>
|
||
</ul>
|
||
|
||
<p>你的任务是用小写英文字母 <strong>替换</strong> <code>s</code> 中 <strong>所有</strong> 问号,使 <code>s</code> 的 <strong>分数</strong><strong>最小 </strong>。</p>
|
||
|
||
<p>请你返回替换所有问号<em> </em><code>'?'</code> 之后且分数最小的字符串。如果有多个字符串的 <strong>分数最小</strong> ,那么返回字典序最小的一个。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong class="example">示例 1:</strong></p>
|
||
|
||
<div class="example-block" style="border-color: var(--border-tertiary); border-left-width: 2px; color: var(--text-secondary); font-size: .875rem; margin-bottom: 1rem; margin-top: 1rem; overflow: visible; padding-left: 1rem;">
|
||
<p><strong>输入:</strong><span class="example-io" style="font-family: Menlo,sans-serif; font-size: 0.85rem;">s = "???" </span></p>
|
||
|
||
<p><strong>输出:</strong> <span class="example-io" style="font-family: Menlo,sans-serif; font-size: 0.85rem;">"abc" </span></p>
|
||
|
||
<p><strong>解释:</strong>这个例子中,我们将 <code>s</code> 中的问号 <code>'?'</code> 替换得到 <code>"abc"</code> 。</p>
|
||
|
||
<p>对于字符串 <code>"abc"</code> ,<code>cost(0) = 0</code> ,<code>cost(1) = 0</code> 和 <code>cost(2) = 0</code> 。</p>
|
||
|
||
<p><code>"abc"</code> 的分数为 <code>0</code> 。</p>
|
||
|
||
<p>其他修改 <code>s</code> 得到分数 <code>0</code> 的字符串为 <code>"cba"</code> ,<code>"abz"</code> 和 <code>"hey"</code> 。</p>
|
||
|
||
<p>这些字符串中,我们返回字典序最小的。</p>
|
||
</div>
|
||
|
||
<p><strong class="example">示例 2:</strong></p>
|
||
|
||
<div class="example-block" style="border-color: var(--border-tertiary); border-left-width: 2px; color: var(--text-secondary); font-size: .875rem; margin-bottom: 1rem; margin-top: 1rem; overflow: visible; padding-left: 1rem;">
|
||
<p><strong>输入:</strong> <span class="example-io" style="font-family: Menlo,sans-serif; font-size: 0.85rem;">s = "a?a?"</span></p>
|
||
|
||
<p><strong>输出:</strong> <span class="example-io" style="font-family: Menlo,sans-serif; font-size: 0.85rem;">"abac"</span></p>
|
||
|
||
<p><strong>解释:</strong>这个例子中,我们将 <code>s</code> 中的问号 <code>'?'</code> 替换得到 <code>"abac"</code> 。</p>
|
||
|
||
<p>对于字符串 <code>"abac"</code> ,<code>cost(0) = 0</code> ,<code>cost(1) = 0</code> ,<code>cost(2) = 1</code> 和 <code>cost(3) = 0</code> 。</p>
|
||
|
||
<p><code>"abac"</code> 的分数为 <code>1</code> 。</p>
|
||
</div>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>1 <= s.length <= 10<sup>5</sup></code></li>
|
||
<li><code>s[i]</code> 要么是小写英文字母,要么是 <code>'?'</code> 。</li>
|
||
</ul>
|