LeetCode 243. Shortest Word Distance

Description

https://leetcode.com/problems/shortest-word-distance/

Given an array of strings wordsDict and two different strings that already exist in the array word1 and word2, return the shortest distance between these two words in the list.

Example 1:

Input: wordsDict = ["practice", "makes", "perfect", "coding", "makes"], word1 = "coding", word2 = "practice"
Output: 3

Example 2:

Input: wordsDict = ["practice", "makes", "perfect", "coding", "makes"], word1 = "makes", word2 = "coding"
Output: 1

Constraints:

  • 1 <= wordsDict.length <= 3 * 104
  • 1 <= wordsDict[i].length <= 10
  • wordsDict[i] consists of lowercase English letters.
  • word1 and word2 are in wordsDict.
  • word1 != word2

Explanation

Compare the distance between word1 and word2 indices.

Python Solution

class Solution:
    def shortestDistance(self, wordsDict: List[str], word1: str, word2: str) -> int:
        min_distance = sys.maxsize
        
        word1_indices = [] 
        word2_indices = []
        
        for i, word in enumerate(wordsDict):
            if word == word1:
                word1_indices.append(i)
            elif word == word2:
                word2_indices.append(i)
                
        
        for w1 in word1_indices:
            for w2 in word2_indices:
                min_distance = min(min_distance, abs(w2 - w1))
        
        
        return min_distance
  • Time Complexity: O(N).
  • Space Complexity: O(N).

Leave a Reply

Your email address will not be published.