Problem Statement
leetcode problem link
Brute Force [Accepted]
class Solution:
def compress(self, chars: List[str]) -> int:
l, r, k = 0, 0, 0
N = len(chars)
for r in range(N):
if chars[r] != chars[l]:
chars[k] = chars[l]
k += 1
length = r - l
if length >= 10:
for c in str(length):
chars[k] = c
k += 1
elif length > 1:
chars[k] = str(length)
k += 1
l = r
if r == N - 1:
chars[k] = chars[l]
k += 1
length = r - l + 1
if length >= 10:
for c in str(length):
chars[k] = c
k += 1
elif length > 1:
chars[k] = str(length)
k += 1
return k
Editorial
class Solution:
def compress(self, chars: List[str]) -> int:
i = 0
res = 0
while i < len(chars):
group_length = 1
while (i + group_length < len(chars)
and chars[i + group_length] == chars[i]):
group_length += 1
chars[res] = chars[i]
res += 1
if group_length > 1:
str_repr = str(group_length)
chars[res:res+len(str_repr)] = list(str_repr)
res += len(str_repr)
i += group_length
return res