820 單詞的壓縮編碼

2022-02-02 06:34:13 字數 760 閱讀 1162

給定乙個單詞列表,我們將這個列表編碼成乙個索引字串 s 與乙個索引列表 a。

例如,如果這個列表是 ["time", "me", "bell"],我們就可以將其表示為 s = "time#bell#" 和 indexes = [0, 2, 5]。

對於每乙個索引,我們可以通過從字串 s 中索引的位置開始讀取字串,直到 "#" 結束,來恢復我們之前的單詞列表。

那麼成功對給定單詞列表進行編碼的最小字串長度是多少呢?

示例:輸入: words = ["time", "me", "bell"]

輸出: 10

說明: s = "time#bell#" , indexes = [0, 2, 5] 。

1 <= words.length <= 2000

1 <= words[i].length <= 7

每個單詞都是小寫字母 。

解:這道題簡單的做法是把所有字元存到乙個雜湊表裡,然後遍歷每個字元,從第二位開始嘗試從雜湊表裡刪除。

仔細理解這道題,能壓縮的字元其實都是另乙個字元的字尾,否則無法用下標表示,所以還對倒敘的字元,用字典序排序,再對兩邊相鄰的做判斷

字典樹可以了解以下

class

solution

for(auto &iter:words)

}int i=0

;

for(auto set_iter:set_str)

return

i; }

};

Leetcode 820 單詞的壓縮編碼

給定乙個單詞列表,我們將這個列表編碼成乙個索引字串s與乙個索引列表a。例如,如果這個列表是 time me bell 我們就可以將其表示為s time bell 和indexes 0,2,5 對於每乙個索引,我們可以通過從字串s中索引的位置開始讀取字串,直到 結束,來恢復我們之前的單詞列表。那麼成功...

LeetCode 820 單詞的壓縮編碼

給定乙個單詞列表,我們將這個列表編碼成乙個索引字串 s 與乙個索引列表 a。例如,如果這個列表是 time me bell 我們就可以將其表示為 s time bell 和 indexes 0,2,5 對於每乙個索引,我們可以通過從字串 s 中索引的位置開始讀取字串,直到 結束,來恢復我們之前的單詞...

LeetCode 820 單詞的壓縮編碼

給定乙個單詞列表,我們將這個列表編碼成乙個索引字串 s 與乙個索引列表 a。例如,如果這個列表是 time me bell 我們就可以將其表示為 s time bell 和 indexes 0,2,5 對於每乙個索引,我們可以通過從字串 s 中索引的位置開始讀取字串,直到 結束,來恢復我們之前的單詞...