mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
59 lines
3.2 KiB
HTML
59 lines
3.2 KiB
HTML
<p>给你两个下标从 <strong>0</strong> 开始的字符串 <code>source</code> 和 <code>target</code> ,它们的长度均为 <code>n</code> 并且由 <strong>小写 </strong>英文字母组成。</p>
|
||
|
||
<p>另给你两个下标从 <strong>0</strong> 开始的字符数组 <code>original</code> 和 <code>changed</code> ,以及一个整数数组 <code>cost</code> ,其中 <code>cost[i]</code> 代表将字符 <code>original[i]</code> 更改为字符 <code>changed[i]</code> 的成本。</p>
|
||
|
||
<p>你从字符串 <code>source</code> 开始。在一次操作中,<strong>如果 </strong>存在 <strong>任意</strong> 下标 <code>j</code> 满足 <code>cost[j] == z</code> 、<code>original[j] == x</code> 以及 <code>changed[j] == y</code> 。你就可以选择字符串中的一个字符 <code>x</code> 并以 <code>z</code> 的成本将其更改为字符 <code>y</code> 。</p>
|
||
|
||
<p>返回将字符串 <code>source</code> 转换为字符串 <code>target</code> 所需的<strong> 最小 </strong>成本。如果不可能完成转换,则返回 <code>-1</code> 。</p>
|
||
|
||
<p><strong>注意</strong>,可能存在下标 <code>i</code> 、<code>j</code> 使得 <code>original[j] == original[i]</code> 且 <code>changed[j] == changed[i]</code> 。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong class="example">示例 1:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>source = "abcd", target = "acbe", original = ["a","b","c","c","e","d"], changed = ["b","c","b","e","b","e"], cost = [2,5,5,1,2,20]
|
||
<strong>输出:</strong>28
|
||
<strong>解释:</strong>将字符串 "abcd" 转换为字符串 "acbe" :
|
||
- 更改下标 1 处的值 'b' 为 'c' ,成本为 5 。
|
||
- 更改下标 2 处的值 'c' 为 'e' ,成本为 1 。
|
||
- 更改下标 2 处的值 'e' 为 'b' ,成本为 2 。
|
||
- 更改下标 3 处的值 'd' 为 'e' ,成本为 20 。
|
||
产生的总成本是 5 + 1 + 2 + 20 = 28 。
|
||
可以证明这是可能的最小成本。
|
||
</pre>
|
||
|
||
<p><strong class="example">示例 2:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>source = "aaaa", target = "bbbb", original = ["a","c"], changed = ["c","b"], cost = [1,2]
|
||
<strong>输出:</strong>12
|
||
<strong>解释:</strong>要将字符 'a' 更改为 'b':
|
||
- 将字符 'a' 更改为 'c',成本为 1
|
||
- 将字符 'c' 更改为 'b',成本为 2
|
||
产生的总成本是 1 + 2 = 3。
|
||
将所有 'a' 更改为 'b',产生的总成本是 3 * 4 = 12 。
|
||
</pre>
|
||
|
||
<p><strong class="example">示例 3:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>source = "abcd", target = "abce", original = ["a"], changed = ["e"], cost = [10000]
|
||
<strong>输出:</strong>-1
|
||
<strong>解释:</strong>无法将 source 字符串转换为 target 字符串,因为下标 3 处的值无法从 'd' 更改为 'e' 。
|
||
</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>1 <= source.length == target.length <= 10<sup>5</sup></code></li>
|
||
<li><code>source</code>、<code>target</code> 均由小写英文字母组成</li>
|
||
<li><code>1 <= cost.length== original.length == changed.length <= 2000</code></li>
|
||
<li><code>original[i]</code>、<code>changed[i]</code> 是小写英文字母</li>
|
||
<li><code>1 <= cost[i] <= 10<sup>6</sup></code></li>
|
||
<li><code>original[i] != changed[i]</code></li>
|
||
</ul>
|