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)/替换字符串中的括号内容 [evaluate-the-bracket-pairs-of-a-string].html
2022-03-29 12:43:11 +08:00

66 lines
3.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>给你一个字符串&nbsp;<code>s</code>&nbsp;,它包含一些括号对,每个括号中包含一个 <strong>非空</strong>&nbsp;的键。</p>
<ul>
<li>比方说,字符串&nbsp;<code>"(name)is(age)yearsold"</code>&nbsp;中,有&nbsp;<strong>两个</strong>&nbsp;括号对,分别包含键&nbsp;<code>"name"</code>&nbsp;<code>"age"</code>&nbsp;</li>
</ul>
<p>你知道许多键对应的值,这些关系由二维字符串数组&nbsp;<code>knowledge</code>&nbsp;表示,其中&nbsp;<code>knowledge[i] = [key<sub>i</sub>, value<sub>i</sub>]</code>&nbsp;,表示键&nbsp;<code>key<sub>i</sub></code>&nbsp;对应的值为&nbsp;<code>value<sub>i</sub></code><sub>&nbsp;</sub></p>
<p>你需要替换 <strong>所有</strong>&nbsp;的括号对。当你替换一个括号对,且它包含的键为&nbsp;<code>key<sub>i</sub></code>&nbsp;时,你需要:</p>
<ul>
<li>&nbsp;<code>key<sub>i</sub></code>&nbsp;和括号用对应的值&nbsp;<code>value<sub>i</sub></code>&nbsp;替换。</li>
<li>如果从 <code>knowledge</code>&nbsp;中无法得知某个键对应的值,你需要将&nbsp;<code>key<sub>i</sub></code>&nbsp;和括号用问号&nbsp;<code>"?"</code>&nbsp;替换(不需要引号)。</li>
</ul>
<p><code>knowledge</code>&nbsp;中每个键最多只会出现一次。<code>s</code>&nbsp;中不会有嵌套的括号。</p>
<p>请你返回替换 <strong>所有</strong>&nbsp;括号对后的结果字符串。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<b>输入:</b>s = "(name)is(age)yearsold", knowledge = [["name","bob"],["age","two"]]
<b>输出:</b>"bobistwoyearsold"
<strong>解释:</strong>
键 "name" 对应的值为 "bob" ,所以将 "(name)" 替换为 "bob" 。
键 "age" 对应的值为 "two" ,所以将 "(age)" 替换为 "two" 。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<b>输入:</b>s = "hi(name)", knowledge = [["a","b"]]
<b>输出:</b>"hi?"
<b>解释:</b>由于不知道键 "name" 对应的值,所以用 "?" 替换 "(name)" 。
</pre>
<p><strong>示例 3</strong></p>
<pre>
<b>输入:</b>s = "(a)(a)(a)aaa", knowledge = [["a","yes"]]
<b>输出:</b>"yesyesyesaaa"
<b>解释:</b>相同的键在 s 中可能会出现多次。
键 "a" 对应的值为 "yes" ,所以将所有的 "(a)" 替换为 "yes" 。
注意,不在括号里的 "a" 不需要被替换。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= s.length &lt;= 10<sup>5</sup></code></li>
<li><code>0 &lt;= knowledge.length &lt;= 10<sup>5</sup></code></li>
<li><code>knowledge[i].length == 2</code></li>
<li><code>1 &lt;= key<sub>i</sub>.length, value<sub>i</sub>.length &lt;= 10</code></li>
<li><code>s</code>&nbsp;只包含小写英文字母和圆括号&nbsp;<code>'('</code>&nbsp;&nbsp;<code>')'</code>&nbsp;</li>
<li><code>s</code>&nbsp;中每一个左圆括号&nbsp;<code>'('</code>&nbsp;都有对应的右圆括号&nbsp;<code>')'</code>&nbsp;</li>
<li><code>s</code>&nbsp;中每对括号内的键都不会为空。</li>
<li><code>s</code>&nbsp;中不会有嵌套括号对。</li>
<li><code>key<sub>i</sub></code>&nbsp;&nbsp;<code>value<sub>i</sub></code>&nbsp;只包含小写英文字母。</li>
<li><code>knowledge</code>&nbsp;中的&nbsp;<code>key<sub>i</sub></code>&nbsp;不会重复。</li>
</ul>