Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Reverse String II

Updated
2 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "541" 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

Given a string s and an integer k, reverse the first k characters for every 2k characters counting from the start of the string. If there are fewer than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and leave the other as original. Example 1: Input: s = "abcdefg", k = 2 Output: "bacdfeg" Example 2: Input: s = "abcd", k = 2 Output: "bacd" Constraints: 1 <= s.length <= 104 s consists of only lowercase English letters. 1 <= k <= 104

Explanation

Here's the breakdown of the solution:

  • Iterate with a Step: Process the string in chunks of 2k characters. This avoids unnecessary computations on unaffected portions of the string.
  • Reverse the First k: Within each chunk, reverse the first k characters, handling cases where fewer than k characters remain.
  • Concatenate and Return: Build the modified string by combining the reversed portions and the original portions.

  • Time Complexity: O(n), where n is the length of the string. Space Complexity: O(n) because we convert the string to a list and back to a string, at worst this can be as big as the string itself.

Code

    def reverse_string_ii(s: str, k: int) -> str:
    """Reverses the first k characters for every 2k characters in a string.

    Args:
        s: The input string.
        k: The number of characters to reverse.

    Returns:
        The modified string.
    """
    s_list = list(s)  # Convert string to list for in-place modification
    n = len(s)

    for i in range(0, n, 2 * k):
        # Reverse the first k characters in the current chunk
        left = i
        right = min(i + k - 1, n - 1)  # Handle cases where less than k chars are left

        while left < right:
            s_list[left], s_list[right] = s_list[right], s_list[left]
            left += 1
            right -= 1

    return "".join(s_list)  # Convert list back to string

More from this blog

C

Chatmagic blog

2894 posts