1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/使字符串平衡的最小交换次数 [minimum-number-of-swaps-to-make-the-string-balanced].html

56 lines
2.1 KiB
HTML
Raw Normal View History

2022-03-27 20:38:29 +08:00
<p>给你一个字符串 <code>s</code> <strong>下标从 0 开始</strong> ,且长度为偶数 <code>n</code> 。字符串 <strong>恰好</strong><code>n / 2</code> 个开括号 <code>'['</code><code>n / 2</code> 个闭括号 <code>']'</code> 组成。</p>
<p>只有能满足下述所有条件的字符串才能称为 <strong>平衡字符串</strong> </p>
<ul>
<li>字符串是一个空字符串,或者</li>
<li>字符串可以记作 <code>AB</code> ,其中 <code>A</code><code>B</code> 都是 <strong>平衡字符串</strong> ,或者</li>
<li>字符串可以写成 <code>[C]</code> ,其中 <code>C</code> 是一个 <strong>平衡字符串</strong></li>
</ul>
<p>你可以交换 <strong>任意</strong> 两个下标所对应的括号 <strong>任意</strong> 次数。</p>
<p>返回使<em> </em><code>s</code> 变成 <strong>平衡字符串</strong> 所需要的 <strong>最小</strong> 交换次数。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>s = "][]["
<strong>输出:</strong>1
<strong>解释:</strong>交换下标 0 和下标 3 对应的括号,可以使字符串变成平衡字符串。
最终字符串变成 "[[]]" 。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>s = "]]][[["
<strong>输出:</strong>2
<strong>解释:</strong>执行下述操作可以使字符串变成平衡字符串:
- 交换下标 0 和下标 4 对应的括号s = "[]][][" 。
- 交换下标 1 和下标 5 对应的括号s = "[[][]]" 。
最终字符串变成 "[[][]]" 。
</pre>
<p><strong>示例 3</strong></p>
<pre>
<strong>输入:</strong>s = "[]"
<strong>输出:</strong>0
<strong>解释:</strong>这个字符串已经是平衡字符串。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>n == s.length</code></li>
<li><code>2 &lt;= n &lt;= 10<sup>6</sup></code></li>
<li><code>n</code> 为偶数</li>
<li><code>s[i]</code><code>'['</code><code>']'</code></li>
<li>开括号 <code>'['</code> 的数目为 <code>n / 2</code> ,闭括号 <code>']'</code> 的数目也是 <code>n / 2</code></li>
</ul>