### View *License Key Formatting* on LeetCode

## Statistics

**Time Spent Coding**

15 minutes

**Time Complexity**

O(n) - Although the input/output strings are iterated multiple times, it does not alter the growth rate, resulting in the O(n) time complexity.

**Space Complexity**

O(n) - The result stores the same number of characters as the input, resulting in the O(n) space complexity.

**Runtime Beats (Array Solution)**

97.61% of other submissions

**Memory Beats (String Solution)**

98.5% of other sumbissions

## Explanation

The input string is reformatted to remove all `-`

, convert all characters to uppercase, and reverse the string.

The input string is then iterated through in steps of k, and due to the way lists work in python, the last added string can be a variable length allowing us to satisfy that edge case.

Example

1
2

x = [1,2,3]
y = x[1:1000] # y -> [2,3]

Once the loop exists, return the result in reverse order.

## Array Solution

1
2
3
4
5
6
7
8
9

class Solution:
def licenseKeyFormatting(self, s: str, k: int) -> str:
res = []
s = s.replace('-', '').upper()[::-1]
for i in range(0,len(s),k):
res.append(s[i:i+k])
return '-'.join(res)[::-1]

## String Solution

1
2
3
4
5
6
7
8
9
10
11
12

class Solution:
def licenseKeyFormatting(self, s: str, k: int) -> str:
res = ""
s = s.replace('-', '').upper()[::-1]
for i in range(0,len(s),k):
if res != "":
res = res + "-" + s[i:i+k]
else:
res = s[i:i+k]
return res[::-1]