class Solution:
def encode(self, strs: list[str]) -> str:
# Efficiently join all "length:string" segments
return "".join(f"{len(s)}:{s}" for s in strs)
def decode(self, s: str) -> list[str]:
decoded = []
i = 0
while i < len(s):
# find the colon
j = s.find(":", i)
length = int(s[i:j]) # parse length
word = s[j+1:j+1+length] # extract word
decoded.append(word)
i = j + 1 + length # move to next segment
return decoded
Y2xhc3MgU29sdXRpb246CiAgICBkZWYgZW5jb2RlKHNlbGYsIHN0cnM6IGxpc3Rbc3RyXSkgLT4gc3RyOgogICAgICAgICMgRWZmaWNpZW50bHkgam9pbiBhbGwgImxlbmd0aDpzdHJpbmciIHNlZ21lbnRzCiAgICAgICAgcmV0dXJuICIiLmpvaW4oZiJ7bGVuKHMpfTp7c30iIGZvciBzIGluIHN0cnMpCgogICAgZGVmIGRlY29kZShzZWxmLCBzOiBzdHIpIC0+IGxpc3Rbc3RyXToKICAgICAgICBkZWNvZGVkID0gW10KICAgICAgICBpID0gMAogICAgICAgIHdoaWxlIGkgPCBsZW4ocyk6CiAgICAgICAgICAgICMgZmluZCB0aGUgY29sb24KICAgICAgICAgICAgaiA9IHMuZmluZCgiOiIsIGkpCiAgICAgICAgICAgIGxlbmd0aCA9IGludChzW2k6al0pICAgICAgICAgICAgICAjIHBhcnNlIGxlbmd0aAogICAgICAgICAgICB3b3JkID0gc1tqKzE6aisxK2xlbmd0aF0gICAgICAgICAgIyBleHRyYWN0IHdvcmQKICAgICAgICAgICAgZGVjb2RlZC5hcHBlbmQod29yZCkKICAgICAgICAgICAgaSA9IGogKyAxICsgbGVuZ3RoICAgICAgICAgICAgICAgICMgbW92ZSB0byBuZXh0IHNlZ21lbnQKICAgICAgICByZXR1cm4gZGVjb2RlZAo=