5403354033 <ul class="md-nav__list">
5403454034
5403554035 <li class="md-nav__item">
54036- <a href="#solution-1" class="md-nav__link">
54036+ <a href="#solution-1-greedy-two-passes " class="md-nav__link">
5403754037 <span class="md-ellipsis">
54038- Solution 1
54038+ Solution 1: Greedy + Two Passes
5403954039 </span>
5404054040 </a>
5404154041
@@ -86791,7 +86791,7 @@ <h2 id="description">Description</h2>
8679186791<pre>
8679286792<strong>Input:</strong> s = ")", locked = "0"
8679386793<strong>Output:</strong> false
86794- <strong>Explanation:</strong> locked permits us to change s[0].
86794+ <strong>Explanation:</strong> locked permits us to change s[0].
8679586795Changing s[0] to either '(' or ')' will not make s valid.
8679686796</pre>
8679786797
@@ -86800,7 +86800,7 @@ <h2 id="description">Description</h2>
8680086800<pre>
8680186801<strong>Input:</strong> s = "(((())(((())", locked = "111111010111"
8680286802<strong>Output:</strong> false
86803- <strong>Explanation:</strong> locked permits us to change s[6] and s[8].
86803+ <strong>Explanation:</strong> locked permits us to change s[6] and s[8].
8680486804We change s[6] and s[8] to ')' to make s valid.
8680586805</pre>
8680686806
@@ -86819,8 +86819,18 @@ <h2 id="description">Description</h2>
8681986819<h2 id="solutions">Solutions</h2>
8682086820<!-- solution:start -->
8682186821
86822- <h3 id="solution-1">Solution 1</h3>
86823- <div class="tabbed-set tabbed-alternate" data-tabs="1:4"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label></div>
86822+ <h3 id="solution-1-greedy-two-passes">Solution 1: Greedy + Two Passes</h3>
86823+ <p>We observe that a string of odd length cannot be a valid parentheses string because there will always be one unmatched parenthesis. Therefore, if the length of the string <span class="arithmatex">\(s\)</span> is odd, return <span class="arithmatex">\(\textit{false}\)</span> immediately.</p>
86824+ <p>Next, we perform two passes.</p>
86825+ <p>The first pass goes from left to right, checking if all <code>'('</code> parentheses can be matched by <code>')'</code> or changeable parentheses. If not, return <span class="arithmatex">\(\textit{false}\)</span>.</p>
86826+ <p>The second pass goes from right to left, checking if all <code>')'</code> parentheses can be matched by <code>'('</code> or changeable parentheses. If not, return <span class="arithmatex">\(\textit{false}\)</span>.</p>
86827+ <p>If both passes complete successfully, it means all parentheses can be matched, and the string <span class="arithmatex">\(s\)</span> is a valid parentheses string. Return <span class="arithmatex">\(\textit{true}\)</span>.</p>
86828+ <p>The time complexity is <span class="arithmatex">\(O(n)\)</span>, where <span class="arithmatex">\(n\)</span> is the length of the string <span class="arithmatex">\(s\)</span>. The space complexity is <span class="arithmatex">\(O(1)\)</span>.</p>
86829+ <p>Similar problems:</p>
86830+ <ul>
86831+ <li><a href="https://github.com/doocs/leetcode/blob/main/solution/0600-0699/0678.Valid%20Parenthesis%20String/README_EN.md">678. Valid Parenthesis String</a></li>
86832+ </ul>
86833+ <div class="tabbed-set tabbed-alternate" data-tabs="1:5"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label></div>
8682486834<div class="tabbed-content">
8682586835<div class="tabbed-block">
8682686836<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -87046,6 +87056,62 @@ <h3 id="solution-1">Solution 1</h3>
8704687056<span class="p">}</span>
8704787057</code></pre></div></td></tr></table></div>
8704887058</div>
87059+ <div class="tabbed-block">
87060+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
87061+ <span class="normal"> 2</span>
87062+ <span class="normal"> 3</span>
87063+ <span class="normal"> 4</span>
87064+ <span class="normal"> 5</span>
87065+ <span class="normal"> 6</span>
87066+ <span class="normal"> 7</span>
87067+ <span class="normal"> 8</span>
87068+ <span class="normal"> 9</span>
87069+ <span class="normal">10</span>
87070+ <span class="normal">11</span>
87071+ <span class="normal">12</span>
87072+ <span class="normal">13</span>
87073+ <span class="normal">14</span>
87074+ <span class="normal">15</span>
87075+ <span class="normal">16</span>
87076+ <span class="normal">17</span>
87077+ <span class="normal">18</span>
87078+ <span class="normal">19</span>
87079+ <span class="normal">20</span>
87080+ <span class="normal">21</span>
87081+ <span class="normal">22</span>
87082+ <span class="normal">23</span>
87083+ <span class="normal">24</span>
87084+ <span class="normal">25</span>
87085+ <span class="normal">26</span>
87086+ <span class="normal">27</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">canBeValid</span><span class="p">(</span><span class="nx">s</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">,</span><span class="w"> </span><span class="nx">locked</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="p">{</span>
87087+ <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
87088+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87089+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
87090+ <span class="w"> </span><span class="p">}</span>
87091+ <span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
87092+ <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87093+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="s1">'('</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">locked</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="s1">'0'</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87094+ <span class="w"> </span><span class="o">++</span><span class="nx">x</span><span class="p">;</span>
87095+ <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87096+ <span class="w"> </span><span class="o">--</span><span class="nx">x</span><span class="p">;</span>
87097+ <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
87098+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
87099+ <span class="w"> </span><span class="p">}</span>
87100+ <span class="w"> </span><span class="p">}</span>
87101+ <span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
87102+ <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="o">--</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87103+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="s1">')'</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">locked</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="s1">'0'</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87104+ <span class="w"> </span><span class="o">++</span><span class="nx">x</span><span class="p">;</span>
87105+ <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87106+ <span class="w"> </span><span class="o">--</span><span class="nx">x</span><span class="p">;</span>
87107+ <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
87108+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
87109+ <span class="w"> </span><span class="p">}</span>
87110+ <span class="w"> </span><span class="p">}</span>
87111+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span>
87112+ <span class="p">}</span>
87113+ </code></pre></div></td></tr></table></div>
87114+ </div>
8704987115</div>
8705087116</div>
8705187117<!-- solution:end -->
0 commit comments