Design an algorithm to encode a list of strings to a single string. The encoded string is then sent over the network and is decoded back to the original list of strings.
Length Prefixed Encoding
To distinguish between the separator and the content of the strings, we prepend each string with its length follow by a special character (e.g., `#`). For example, `hello` becomes `5#hello`. During decoding, we read the length until we hit `#`, then read the guaranteed number of characters specified by that length.