我一開始還以為要從List里找跟given word比較最短的edit distance. 后來發現原來給 2 words
這樣看這題還是很簡單的。。暴力解法來說。。
我一開始想到的方法其實是這個One-pass solution. 但是一直沒想到如何確認兩個words都搜索到了。。。這里有一個Trick: 設兩個index, 初始化為-1. 如果都找到了,他們都會有賦值,不是-1. 這個算法細思及恐。。。有一種掃描線的思想在里頭
Follow-up:
如果我們repeatedly call WordDistance function的話,如何優化這個class。很明顯我們要記住之前的結果,所以基本上會想到memorization---》 HashMap。
初步想法就是把這個單詞的所有出現位置記錄起來。然后比較shortest distance的時候,
從Map里找出2個單詞所有出現的位置,然后進行比較。
比較的地方比較tricky,并不是暴力2個Loop遍歷所有情況。
用雙指針記錄兩個list的position。然后比較目前word1 還是word2 的位置在前面來判斷移動哪一個。