243. Shortest Word Distance
Copy Given a list of words and two words word1 and word2, return the shortest distance between these two words in the list.
Note:
You may assume that word1 does not equal to word2, and word1 and word2 are both in the list.
Copy Input: words = ["practice", "makes", "perfect", "coding", "makes"]
word1 = “coding”
word2 = “practice”
Output: 3
Copy class Solution ( object ):
def shortestDistance ( self , words , word1 , word2 ):
"""
:type words: List[str]
:type word1: str
:type word2: str
:rtype: int
"""
p1 , p2 = [] , []
# find position for word1 and word2
for i in range ( len (words)):
if words [ i ] == word1 :
p1 . append (i)
elif words [ i ] == word2 :
p2 . append (i)
# find shortest distance
distance = len (words)
for i in p1 :
for j in p2 :
distance = min (distance, abs (i - j))
return distance
Copy class Solution ( object ):
def shortestDistance ( self , words , word1 , word2 ):
"""
:type words: List[str]
:type word1: str
:type word2: str
:rtype: int
"""
n = len (words)
distance = n
p1 = p2 = - n
for i in range (n):
if words [ i ] == word1 :
p1 = i
distance = min (distance, i - p2)
elif words [ i ] == word2 :
p2 = i
distance = min (distance, i - p1)
return distance