mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
45 lines
2.3 KiB
HTML
45 lines
2.3 KiB
HTML
<p>给你两个下标从 <strong>0</strong> 开始的二进制字符串 <code>s1</code> 和 <code>s2</code> ,两个字符串的长度都是 <code>n</code> ,再给你一个正整数 <code>x</code> 。</p>
|
||
|
||
<p>你可以对字符串 <code>s1</code> 执行以下操作 <strong>任意次</strong> :</p>
|
||
|
||
<ul>
|
||
<li>选择两个下标 <code>i</code> 和 <code>j</code> ,将 <code>s1[i]</code> 和 <code>s1[j]</code> 都反转,操作的代价为 <code>x</code> 。</li>
|
||
<li>选择满足 <code>i < n - 1</code> 的下标 <code>i</code> ,反转 <code>s1[i]</code> 和 <code>s1[i + 1]</code> ,操作的代价为 <code>1</code> 。</li>
|
||
</ul>
|
||
|
||
<p>请你返回使字符串 <code>s1</code> 和 <code>s2</code> 相等的 <strong>最小</strong> 操作代价之和,如果无法让二者相等,返回 <code>-1</code> 。</p>
|
||
|
||
<p><strong>注意</strong> ,反转字符的意思是将 <code>0</code> 变成 <code>1</code> ,或者 <code>1</code> 变成 <code>0</code> 。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong class="example">示例 1:</strong></p>
|
||
|
||
<pre>
|
||
<b>输入:</b>s1 = "1100011000", s2 = "0101001010", x = 2
|
||
<b>输出:</b>4
|
||
<b>解释:</b>我们可以执行以下操作:
|
||
- 选择 i = 3 执行第二个操作。结果字符串是 s1 = "110<em><strong>11</strong></em>11000" 。
|
||
- 选择 i = 4 执行第二个操作。结果字符串是 s1 = "1101<em><strong>00</strong></em>1000" 。
|
||
- 选择 i = 0 和 j = 8 ,执行第一个操作。结果字符串是 s1 = "<em><strong>0</strong></em>1010010<em><strong>1</strong></em>0" = s2 。
|
||
总代价是 1 + 1 + 2 = 4 。这是最小代价和。
|
||
</pre>
|
||
|
||
<p><strong class="example">示例 2:</strong></p>
|
||
|
||
<pre>
|
||
<b>输入:</b>s1 = "10110", s2 = "00011", x = 4
|
||
<b>输出:</b>-1
|
||
<b>解释:</b>无法使两个字符串相等。
|
||
</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>n == s1.length == s2.length</code></li>
|
||
<li><code>1 <= n, x <= 500</code></li>
|
||
<li><code>s1</code> 和 <code>s2</code> 只包含字符 <code>'0'</code> 和 <code>'1'</code> 。</li>
|
||
</ul>
|