243. 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.

解题要点:

记录word1和word2出现的index,两个相减,得出答案。

class Solution(object):
    def shortestDistance(self, words, word1, word2):
        """
        :type words: List[str]
        :type word1: str
        :type word2: str
        :rtype: int
        """
        w1 = w2 = -1
        res = sys.maxint
        for i, k in enumerate(words):
            if k == word1:
                w1 = i
            elif k == word2:
                w2 = i
            if w1 != -1 and w2 != -1:
                res = min(res, abs(w1 - w2))
        return res
        

Last updated

Was this helpful?