LeetCode 筆記 - 97. Interleaving String
題目在此 97. Interleaving String
給定三個字串 s1、s2、s3,請問 s3 是否可以由 s1 與 s2 交錯組成?
解題思維
名詞解說:
- Depth First Search
- Dynamic programming
這題以標準解法來說,就是 DFS + memoization。
那 memoization 有人會自己實作 DP 或是直接用 @cache,這邊我們就用 @cache 來實作。
在這裡簡單解釋一下 @cache, @lru_cache 的用法,這個 decorator 會幫你把函式的輸入與輸出記錄下來,如果下次輸入的參數與之前的一樣,就直接回傳之前的結果,不會再執行一次函式。
如果想了解更多細節,可以參考官方文件 functools.cache。
關於這題,我是想像成 2D 的地圖,Y 軸是 s1,X 軸是 s2,然後從左上角開始走,如果可以走到右下角,那就代表可以組成 s3。
途中跟 s3 確認是否含有 s1 or s2,如果發現走不下去了,就回傳 False。

程式碼
1 | class Solution: |
