Solving Leetcode Interviews in Seconds with AI: License Key Formatting
Introduction
In this blog post, we will explore how to solve the LeetCode problem "482" 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 license key represented as a string s that consists of only alphanumeric characters and dashes. The string is separated into n + 1 groups by n dashes. You are also given an integer k. We want to reformat the string s such that each group contains exactly k characters, except for the first group, which could be shorter than k but still must contain at least one character. Furthermore, there must be a dash inserted between two groups, and you should convert all lowercase letters to uppercase. Return the reformatted license key. Example 1: Input: s = "5F3Z-2e-9-w", k = 4 Output: "5F3Z-2E9W" Explanation: The string s has been split into two parts, each part has 4 characters. Note that the two extra dashes are not needed and can be removed. Example 2: Input: s = "2-5g-3-J", k = 2 Output: "2-5G-3J" Explanation: The string s has been split into three parts, each part has 2 characters except the first part as it could be shorter as mentioned above. Constraints: 1 <= s.length <= 105 s consists of English letters, digits, and dashes '-'. 1 <= k <= 104
Explanation
Here's the solution to the license key formatting problem:
- Clean and Convert: Remove dashes and convert the string to uppercase for consistency.
- Group Characters: Iterate backward through the cleaned string, creating groups of
kcharacters. Build Reformatted String: Prepend each group to the result string, adding a dash between groups (except at the beginning).
Runtime Complexity: O(n), where n is the length of the input string.
- Storage Complexity: O(n), to store the reformatted string.
Code
def licenseKeyFormatting(s: str, k: int) -> str:
"""
Reformats a license key string according to the given rules.
Args:
s: The license key string.
k: The desired group size.
Returns:
The reformatted license key string.
"""
cleaned_s = s.replace("-", "").upper()
n = len(cleaned_s)
result = ""
for i in range(n - 1, -1, -1):
result = cleaned_s[i] + result
if (n - 1 - i) % k == 0 and i != 0:
result = "-" + result
return result