1106。解析布林表達式
難度:難
主題:字串、堆疊、遞歸
布林表達式 是計算結果為 true 或 false 的表達式。它可以是以下形狀之一:
給定一個表示布林表達式的字串表達式,傳回該表達式的評估。
保證給定的表達式有效並遵循給定的規則。
範例1:
範例2:
範例 3:
約束:
提示:
解:
我們將把解決方案分解為更小的函數,用於處理解析和評估不同類型的表達式:parse_or、parse_and、parse_not,以及一個主要的解析函數,用於遞歸地處理表達式的解析。我們將使用堆疊來追蹤嵌套表達式並逐步評估它們。
解析與遞歸:
輔助函數:
表達式處理:
讓我們用 PHP 實作這個解:1106。解析布林表達式
<?php /** * @param String $expression * @return Boolean */ function parseBooleanExpression($expression) { ... ... ... /** * go to ./solution.php */ } /** * the logical AND * * @param $subExpr * @return bool */ function parse_and($subExpr) { ... ... ... /** * go to ./solution.php */ } /** * the logical OR * * @param $subExpr * @return bool */ function parse_or($subExpr) { ... ... ... /** * go to ./solution.php */ } /** * the logical NOT * * @param $subExpr * @return bool */ function parse_not($subExpr) { // subExpr contains only one element for NOT operation ... ... ... /** * go to ./solution.php */ } // Test cases echo parseBooleanExpression("&(|(f))") ? "true" : "false"; // Output: false echo "\n"; echo parseBooleanExpression("|(f,f,f,t)") ? "true" : "false"; // Output: true echo "\n"; echo parseBooleanExpression("!(&(f,t))") ? "true" : "false"; // Output: true ?>
主要函數(解析布林表達式):
輔助函數:
輸入:「&(|(f))」
輸入:「|(f,f,f,t)」
輸入:「!(&(f,t))」
此解決方案非常適合約束條件,並且應該有效處理輸入大小。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是解析布林表達式的詳細內容。更多資訊請關注PHP中文網其他相關文章!