跳到主要內容

精選文章

KOTLIN 學習 : LEETCODE Hard 1106. Parsing A Boolean Expression

前篇:KOTLIN 學習 : LEETCODE Easy 2331. Evaluate Boolean Binary Tree


Leetcode 題目 : 1106. Parsing A Boolean Expression 

程式:Github


這題挺有意思的, 主要可以分成兩個部分

1. makeTreeNodeFromString()

   字串轉換成 AND-OR tree, 但和前題不同的是

   - 多元樹 而非 二元樹

   - 除了 AND, OR 之外, 還多了 NOT 

2.  evaluateTree()

    這個新的 AND-OR tree 的計算





第二個 計算本身 還蠻好寫的, 如下:


估計這題之所以會變成 Hard, 可能在於

1. 不曉得用 AND-OR tree 來做

2. 字串轉換到 AND-OR tree 的盲點


之所以會說字串轉換的盲點, 在於 字串處理時, 有 逗號 , 和 括號 () , 

並不能單純用逗號分隔就完事了, 也就是說, 逗號可能有不同的層次

 



所以需要多一個括號的處理




結果:

蠻好的; 最近都顯示 100% beats , 不曉得是否真是如此^^



PS: 題目設計沒有例外, 將來找 bug 例外處理時, 或許可以設計一個好的機制

PS: 和前題一樣, 記錄一下指令:

% kotlinc Solution.kt -include-runtime -d Solution.jar

java -jar Solution.jar



留言

熱門文章