# LeetCode 482 License Key Formatting Solution

LeetCode 482 License Key Formatting Solution in Python 3.

LeetCode 482 Solution 32 ms in Python 3

You are given a license key represented by the string s that contains only alphanumeric characters and dashes. You are also given an integer k.

Reformat the string s so that each group contains exactly k characters, except the first group that should be smaller than k but must contain at least 1 character.

Groups must be separated by dashes and all characters must be uppercase.

## Analysis

First clean-up the input string s

• Remove all dashes from s,
• Convert s to uppercase.
``````#cleanup the input
chars = s.upper().replace('-','')
charslen = len(chars)``````

Find how many whole sets of k can be found in s.

``````#sets and remainder
pieces = charslen // k
rest = charslen % k``````

Using Modulo we find the remainder after dividing the lenght of s by k.

For the first set, insert the remainder characters lenght and a dash if there are more characters left.

``````#start with remainder
output = chars[:rest]
output+= '-' if rest != 0 else ''``````

Slice the remaining string using a loop thru the sets. i*k is to jump from set to set and +rest is to offset the already used characters.

``````#slice the remaining string into sets
for i in range(pieces):
output += chars[i*k+rest : (i+1)*k+rest] + '-'
output = output[:-1] # remove the last - char``````

Whole Solution Code in Python 3

Code steps

``````class Solution:
def licenseKeyFormatting(self, s: str, k: int) -> str:
"""
Dragos Ion 2021
32 ms solution
Using Mod and Slice
"""
#cleanup the input
chars = s.upper().replace('-','')
charslen = len(chars)

#sets and remainder
pieces = charslen // k
rest = charslen % k

output = chars[:rest]
output+= '-' if rest != 0 else ''

#slice the remaining string into sets
for i in range(pieces):
output += chars[i*k+rest : (i+1)*k+rest] + '-'
output = output[:-1] # remove the last - char

return output``````