Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Shortest Distance to Target String in a Circular Array

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "2515" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

Problem Statement

You are given a 0-indexed circular string array words and a string target. A circular array means that the array's end connects to the array's beginning. Formally, the next element of words[i] is words[(i + 1) % n] and the previous element of words[i] is words[(i - 1 + n) % n], where n is the length of words. Starting from startIndex, you can move to either the next word or the previous word with 1 step at a time. Return the shortest distance needed to reach the string target. If the string target does not exist in words, return -1. Example 1: Input: words = ["hello","i","am","leetcode","hello"], target = "hello", startIndex = 1 Output: 1 Explanation: We start from index 1 and can reach "hello" by - moving 3 units to the right to reach index 4. - moving 2 units to the left to reach index 4. - moving 4 units to the right to reach index 0. - moving 1 unit to the left to reach index 0. The shortest distance to reach "hello" is 1. Example 2: Input: words = ["a","b","leetcode"], target = "leetcode", startIndex = 0 Output: 1 Explanation: We start from index 0 and can reach "leetcode" by - moving 2 units to the right to reach index 3. - moving 1 unit to the left to reach index 3. The shortest distance to reach "leetcode" is 1. Example 3: Input: words = ["i","eat","leetcode"], target = "ate", startIndex = 0 Output: -1 Explanation: Since "ate" does not exist in words, we return -1. Constraints: 1 <= words.length <= 100 1 <= words[i].length <= 100 words[i] and target consist of only lowercase English letters. 0 <= startIndex < words.length

Explanation

Here's a solution to the problem:

  • Iterate and Compare: Iterate through the words array, comparing each word to the target.
  • Calculate Distance: If a match is found, calculate the distance from startIndex in both directions (clockwise and counter-clockwise).
  • Minimize: Return the minimum of these distances. If no match is found, return -1.

  • Time Complexity: O(n), where n is the length of the words array. Space Complexity: O(1).

Code

    def shortestDistance(words, target, startIndex):
    """
    Finds the shortest distance to reach the target string in a circular array.

    Args:
        words: A list of strings representing the circular array.
        target: The target string to search for.
        startIndex: The starting index.

    Returns:
        The shortest distance to reach the target, or -1 if the target is not found.
    """

    n = len(words)
    min_distance = float('inf')

    for i in range(n):
        if words[i] == target:
            distance1 = abs(i - startIndex)
            distance2 = n - distance1
            min_distance = min(min_distance, distance1, distance2)

    if min_distance == float('inf'):
        return -1
    else:
        return min_distance

More from this blog

C

Chatmagic blog

2894 posts