/**
* @param {string[]} words
* @param {string} word1
* @param {string} word2
* @return {number}
*/
var findClosest = function (words, word1, word2) {
const len = words.length;
// 找到 word1 或者 word2
const foundTarget = word => [word1, word2].includes(word);
// e.g. 如果当前是 word1,那下一个要找的是 word2
const getNext = cur => (cur === word1 ? word2 : word1);
let res = len;
let l = -1,
r = -1,
next = ''; // 下一个目标词
while (r < len) {
// 找到 word1 或者 word2
if (foundTarget(words[r])) {
// 如果找到的是目标词就更新 res
if (words[r] === next && r - l < res) res = r - l;
// 获取下一个目标词
next = getNext(words[r]);
l = r;
r = r + 1;
} else {
r++;
}
}
return res;
};