天天看點

Leetcode: Word Pattern II

因為目标字元串可以任意劃分,是以我們不得不嘗試所有可能性。這裡通過深度優先搜尋的回溯法,對于pattern中每個字母,在str中嘗試所有的劃分方式,如果劃分出來的子串可以用這個字母映射,或者可以建立一個新的字母和字元串的映射關系,我們就繼續遞歸判斷下一個pattern中的字母,直到pattern的指針和str的指針同時指到最末

技巧在于,

1. 用HashMap + HashSet來保證一一對應

2. 把HashMap和HashSet用作instance variable, 甚至boolean result也可用作instance variable, 這樣任何在遞歸調用函數裡所做的改變,都會保留,而不用把HashMap, HashSet, result加入遞歸argument