Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Append Characters to String to Make Subsequence

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "2486" 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 two strings s and t consisting of only lowercase English letters. Return the minimum number of characters that need to be appended to the end of s so that t becomes a subsequence of s. A subsequence is a string that can be derived from another string by deleting some or no characters without changing the order of the remaining characters. Example 1: Input: s = "coaching", t = "coding" Output: 4 Explanation: Append the characters "ding" to the end of s so that s = "coachingding". Now, t is a subsequence of s ("coachingding"). It can be shown that appending any 3 characters to the end of s will never make t a subsequence. Example 2: Input: s = "abcde", t = "a" Output: 0 Explanation: t is already a subsequence of s ("abcde"). Example 3: Input: s = "z", t = "abcde" Output: 5 Explanation: Append the characters "abcde" to the end of s so that s = "zabcde". Now, t is a subsequence of s ("zabcde"). It can be shown that appending any 4 characters to the end of s will never make t a subsequence. Constraints: 1 <= s.length, t.length <= 105 s and t consist only of lowercase English letters.

Explanation

Here's the breakdown of the problem and the Python solution:

  • Approach:

    • Iterate through string t. For each character in t, find its earliest occurrence in s starting from the last matched index.
    • If a character in t is not found in the remaining part of s, it means we need to append it to s.
    • The number of appended characters is the answer.
  • Complexity:

    • Runtime: O(m + n), where m is the length of s and n is the length of t.
    • Storage: O(1)

Code

    def append_characters(s: str, t: str) -> int:
    """
    Given two strings s and t consisting of only lowercase English letters.
    Return the minimum number of characters that need to be appended to the end of s so that t becomes a subsequence of s.
    A subsequence is a string that can be derived from another string by deleting some or no characters without changing the order of the remaining characters.

    Example 1:
    Input: s = "coaching", t = "coding"
    Output: 4
    Explanation: Append the characters "ding" to the end of s so that s = "coachingding". Now, t is a subsequence of s ("coachingding").
    It can be shown that appending any 3 characters to the end of s will never make t a subsequence.

    Example 2:
    Input: s = "abcde", t = "a"
    Output: 0
    Explanation: t is already a subsequence of s ("abcde").

    Example 3:
    Input: s = "z", t = "abcde"
    Output: 5
    Explanation: Append the characters "abcde" to the end of s so that s = "zabcde". Now, t is a subsequence of s ("zabcde").
    It can be shown that appending any 4 characters to the end of s will never make t a subsequence.

    Constraints:
    1 <= s.length, t.length <= 105
    s and t consist only of lowercase English letters.
    """
    s_idx = 0
    t_idx = 0
    appended_count = 0

    while t_idx < len(t):
        found = False
        while s_idx < len(s):
            if s[s_idx] == t[t_idx]:
                found = True
                s_idx += 1
                t_idx += 1
                break
            s_idx += 1

        if not found:
            appended_count += 1
            t_idx += 1
            s_idx = s_idx  # do not increment s_idx, it needs to remain at the original unmatched place
    return appended_count

More from this blog

C

Chatmagic blog

2894 posts