Solving Leetcode Interviews in Seconds with AI: Adding Spaces to a String
Introduction
In this blog post, we will explore how to solve the LeetCode problem "2109" 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 string s and a 0-indexed integer array spaces that describes the indices in the original string where spaces will be added. Each space should be inserted before the character at the given index. For example, given s = "EnjoyYourCoffee" and spaces = [5, 9], we place spaces before 'Y' and 'C', which are at indices 5 and 9 respectively. Thus, we obtain "Enjoy Your Coffee". Return the modified string after the spaces have been added. Example 1: Input: s = "LeetcodeHelpsMeLearn", spaces = [8,13,15] Output: "Leetcode Helps Me Learn" Explanation: The indices 8, 13, and 15 correspond to the underlined characters in "LeetcodeHelpsMeLearn". We then place spaces before those characters. Example 2: Input: s = "icodeinpython", spaces = [1,5,7,9] Output: "i code in py thon" Explanation: The indices 1, 5, 7, and 9 correspond to the underlined characters in "icodeinpython". We then place spaces before those characters. Example 3: Input: s = "spacing", spaces = [0,1,2,3,4,5,6] Output: " s p a c i n g" Explanation: We are also able to place spaces before the first character of the string. Constraints: 1 <= s.length <= 3 105 s consists only of lowercase and uppercase English letters. 1 <= spaces.length <= 3 105 0 <= spaces[i] <= s.length - 1 All the values of spaces are strictly increasing.
Explanation
Here's an efficient solution to the string modification problem:
- Iterate and Insert: Iterate through the original string
s. Maintain a separate index for thespacesarray. If the current character's index insmatches an index inspaces, insert a space before appending the character to the result. - Sorted Spaces: The
spacesarray is sorted, which enables us to efficiently track the insertion points using a single pass. StringBuilder: Use a StringBuilder approach (achieved via list concatenation in Python) to avoid repeated string object creation and improve performance.
Runtime Complexity: O(n + m), where n is the length of the string
sand m is the length of thespacesarray.- Storage Complexity: O(n + m) in the worst case (if every character in 's' had a space before it + the size of spaces array itself).
Code
def add_spaces(s: str, spaces: list[int]) -> str:
"""
Modifies the input string by adding spaces at specified indices.
Args:
s: The original string.
spaces: A list of indices where spaces should be added.
Returns:
The modified string with spaces.
"""
res = []
space_idx = 0
for i in range(len(s)):
if space_idx < len(spaces) and i == spaces[space_idx]:
res.append(" ")
space_idx += 1
res.append(s[i])
return "".join(res)