Task
Given a string, return its encoding defined as follows:
- First, the string is divided into the least possible number of disjoint substrings consisting of identical characters
- for example,
"aabbbc"
is divided into["aa", "bbb", "c"]
- for example,
- Next, each substring with length greater than one is replaced with a concatenation of its length and the repeating character
- for example, substring
"bbb"
is replaced by"3b"
- for example, substring
- Finally, all the new strings are concatenated together in the same order and a new string is returned.
Example
For s = "aabbbc"
, the output should be
lineEncoding(s) = "2a3bc"
.
Input/Output
-
[execution time limit]
4 seconds (py3) -
[input] string s
String consisting of lowercase English letters. Guaranteed constraints:4 ≤ s.length ≤ 15
. -
[output] string
Encoded version ofs
.
My Solution
def lineEncoding(s):
s = s + '_'
encoded = ''
count = 1
for i in range(len(s) - 1):
if s[i] == s[i + 1]:
count += 1
else:
if count == 1:
encoded += s[i]
else:
encoded += str(count) + s[i]
count = 1
return encoded