diff --git a/medium/string_compression_iii.py b/medium/string_compression_iii.py new file mode 100644 index 0000000..72d4a28 --- /dev/null +++ b/medium/string_compression_iii.py @@ -0,0 +1,29 @@ +# https://leetcode.com/problems/string-compression-iii + +class Solution: + def compressedString(self, word: str) -> str: + last_char = None + l = 0 + result = [] + def to_string(ch, cnt, result): + if cnt <= 9: + result.append(str(cnt)) + result.append(ch) + else: + cnt -= 9 + result.append('9') + result.append(ch) + to_string(ch, cnt, result) + for ch in word: + if last_char == None: + last_char = ch + l = 1 + continue + if last_char != ch: + to_string(last_char, l, result) + l = 1 + last_char = ch + else: + l += 1 + to_string(last_char, l, result) + return ''.join(result)