-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ab615f7
commit 97fec8d
Showing
1 changed file
with
51 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
<h2><a href="https://leetcode.com/problems/parsing-a-boolean-expression">1106. Parsing A Boolean Expression</a></h2><h3>Hard</h3><hr><p>A <strong>boolean expression</strong> is an expression that evaluates to either <code>true</code> or <code>false</code>. It can be in one of the following shapes:</p> | ||
|
||
<ul> | ||
<li><code>'t'</code> that evaluates to <code>true</code>.</li> | ||
<li><code>'f'</code> that evaluates to <code>false</code>.</li> | ||
<li><code>'!(subExpr)'</code> that evaluates to <strong>the logical NOT</strong> of the inner expression <code>subExpr</code>.</li> | ||
<li><code>'&(subExpr<sub>1</sub>, subExpr<sub>2</sub>, ..., subExpr<sub>n</sub>)'</code> that evaluates to <strong>the logical AND</strong> of the inner expressions <code>subExpr<sub>1</sub>, subExpr<sub>2</sub>, ..., subExpr<sub>n</sub></code> where <code>n >= 1</code>.</li> | ||
<li><code>'|(subExpr<sub>1</sub>, subExpr<sub>2</sub>, ..., subExpr<sub>n</sub>)'</code> that evaluates to <strong>the logical OR</strong> of the inner expressions <code>subExpr<sub>1</sub>, subExpr<sub>2</sub>, ..., subExpr<sub>n</sub></code> where <code>n >= 1</code>.</li> | ||
</ul> | ||
|
||
<p>Given a string <code>expression</code> that represents a <strong>boolean expression</strong>, return <em>the evaluation of that expression</em>.</p> | ||
|
||
<p>It is <strong>guaranteed</strong> that the given expression is valid and follows the given rules.</p> | ||
|
||
<p> </p> | ||
<p><strong class="example">Example 1:</strong></p> | ||
|
||
<pre> | ||
<strong>Input:</strong> expression = "&(|(f))" | ||
<strong>Output:</strong> false | ||
<strong>Explanation:</strong> | ||
First, evaluate |(f) --> f. The expression is now "&(f)". | ||
Then, evaluate &(f) --> f. The expression is now "f". | ||
Finally, return false. | ||
</pre> | ||
|
||
<p><strong class="example">Example 2:</strong></p> | ||
|
||
<pre> | ||
<strong>Input:</strong> expression = "|(f,f,f,t)" | ||
<strong>Output:</strong> true | ||
<strong>Explanation:</strong> The evaluation of (false OR false OR false OR true) is true. | ||
</pre> | ||
|
||
<p><strong class="example">Example 3:</strong></p> | ||
|
||
<pre> | ||
<strong>Input:</strong> expression = "!(&(f,t))" | ||
<strong>Output:</strong> true | ||
<strong>Explanation:</strong> | ||
First, evaluate &(f,t) --> (false AND true) --> false --> f. The expression is now "!(f)". | ||
Then, evaluate !(f) --> NOT false --> true. We return true. | ||
</pre> | ||
|
||
<p> </p> | ||
<p><strong>Constraints:</strong></p> | ||
|
||
<ul> | ||
<li><code>1 <= expression.length <= 2 * 10<sup>4</sup></code></li> | ||
<li>expression[i] is one following characters: <code>'('</code>, <code>')'</code>, <code>'&'</code>, <code>'|'</code>, <code>'!'</code>, <code>'t'</code>, <code>'f'</code>, and <code>','</code>.</li> | ||
</ul> |