Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Decoded String at Index

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "880" 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 an encoded string s. To decode the string to a tape, the encoded string is read one character at a time and the following steps are taken: If the character read is a letter, that letter is written onto the tape. If the character read is a digit d, the entire current tape is repeatedly written d - 1 more times in total. Given an integer k, return the kth letter (1-indexed) in the decoded string. Example 1: Input: s = "leet2code3", k = 10 Output: "o" Explanation: The decoded string is "leetleetcodeleetleetcodeleetleetcode". The 10th letter in the string is "o". Example 2: Input: s = "ha22", k = 5 Output: "h" Explanation: The decoded string is "hahahaha". The 5th letter is "h". Example 3: Input: s = "a2345678999999999999999", k = 1 Output: "a" Explanation: The decoded string is "a" repeated 8301530446056247680 times. The 1st letter is "a". Constraints: 2 <= s.length <= 100 s consists of lowercase English letters and digits 2 through 9. s starts with a letter. 1 <= k <= 109 It is guaranteed that k is less than or equal to the length of the decoded string. The decoded string is guaranteed to have less than 263 letters.

Explanation

Here's a breakdown of the solution:

  • Reverse Engineering: Instead of building the potentially huge decoded string, we work backward from the target index k.
  • Length Tracking: We iterate through the encoded string to determine the length of the fully decoded string. Then, iterate through the string backwards.
  • Modulo Operation: When encountering a digit, we use the modulo operator (%) to effectively "rewind" k to its equivalent position within the original tape before the repetition.

  • Runtime Complexity: O(N) where N is the length of the string s. Storage Complexity: O(1)

Code

    def decodeAtIndex(s: str, k: int) -> str:
    """
    Decodes a string and returns the kth letter (1-indexed).

    Args:
        s: The encoded string.
        k: The index of the letter to return.

    Returns:
        The kth letter in the decoded string.
    """

    length = 0
    for char in s:
        if char.isdigit():
            length *= int(char)
        else:
            length += 1

    for i in range(len(s) - 1, -1, -1):
        char = s[i]
        k %= length

        if k == 0 and char.isalpha():
            return char

        if char.isdigit():
            length //= int(char)
        else:
            length -= 1

    return ""

More from this blog

C

Chatmagic blog

2894 posts