https://leetcode.com/problems/shortest-word-distance/
Given a list of words and two words word1 and word2, return the shortest distance between these two words in the list.
Example:
Assume that words = ["practice", "makes", "perfect", "coding", "makes"]
.
Input: word1 = “coding”, word2 = “practice”
Output: 3
Input: word1 = "makes", word2 = "coding"
Output: 1
Note: You may assume that word1 does not equal to word2, and word1 and word2 are both in the list.
class Solution:
def shortestDistance(self, words: List[str], word1: str, word2: str) -> int:
# O(N)
i1,i2=-1,-1
ans=len(words)
for i,w in enumerate(words):
if w==word1:
i1=i
elif w==word2:
i2=i
if i1!=-1 and i2!=-1:
ans=min(ans,abs(i1-i2))
return ans