271. Encode and Decode Strings
題目網址:https://leetcode.cn/problems/encode-and-decode-strings/
題意:給一 string list
strs, 請設計一演算法, 讓 encode 後的 string 可以透過網路高效傳輸, 並透過 decode 還原回原本的 string list。注意:
- string 可能會包含所有的 ASCII char, 所以你設計的演算法要能處理任何可能出現的 char
- 請勿使用
class member、global variable、static variable來儲存額外的狀態

Solution:
想法:不能只在兩個 string 間只用一個分隔符 (delimiter) 隔開, 因為也有可能 input 中恰好有該分隔符組成的 string
e.g.
delimiter = '#',strs = ['1', '2#3']這樣會得到錯誤的答案
['1', '2', '3'], 而非['1', '2#3']因此, 要額外紀錄每個 string 的長度:
- Encode 時, 在每個 string
s前面加上長度s.size()和分割符#- Decode 時, 首先找出 idx
i往後的第一個#, 假設其 idx 為j, 則s[i, j)轉成 int 後即為s的長度。從j + 1往後(含)取s[i, j)個 char 即可得到當前的s
class Codec { |
- time:
- encode:$O(n)$ ➔
n為strs中所有 string 的總長度 - decode:$O(n)$ ➔
n為s的長度
- encode:$O(n)$ ➔
- space:$O(n)$ ➔ 皆需要 $O(n)$ 來儲存原先所有的 string
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論