Problem
Given a string word
, compress it using the following algorithm:
- Begin with an empty string
comp
. Whileword
is not empty, use the following operation:- Remove a maximum length prefix of
word
made of a single characterc
repeating at most 9 times. - Append the length of the prefix followed by
c
tocomp
.
- Remove a maximum length prefix of
Return the string comp
.
Examples
Example 1:
|
|
Example 2:
|
|
Solution
Method 1 - Count the continuous chars
- Initialisation:
- Initialise an empty string
comp
to store the compressed result. - Initialise
i
to traverse theword
.
- Initialise an empty string
- Loop through the word:
- While
i
is less than the length ofword
:- Determine the current character
c
which isword[i]
. - Count the length of the prefix of
c
repeating, but limit the count to a maximum of 9. - Append the count followed by
c
to thecomp
string. - Increment
i
by the count to move to the next segment of the string.
- Determine the current character
- While
- Return the compressed string
comp
.
Video explanation
Here is the video explaining this method in detail. Please check it out:
Code
|
|
|
|
Complexity
- ⏰ Time complexity:
O(n)
, wheren
is the length of theword
. We traverse theword
once. - 🧺 Space complexity:
O(n)
. In the worst case scenario thecomp
string can be of length2n
since each character can result in a numeric value and the character itself being appended.