我一开始还以为要从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 的位置在前面来判断移动哪一个。