LeetCode 820 單詞的壓縮編碼

2022-08-29 17:18:27 字數 745 閱讀 5917

給定乙個單詞列表,我們將這個列表編碼成乙個索引字串 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] 。

將所有單詞放在set中,對於對於set中每個單詞,遍歷其字尾,看是否在set中,如果在就刪除,比如time,那麼就遍歷ime, me, e,刪除me。這樣就保證了set中留下來的單詞不可能再合併了,最後遍歷set加上每個單詞長度和#號。

時間複雜度:o($\sum w_^2$),其中 $w_$ 是words[i] 的長度,每個單詞有 $w_$ 個字尾,查詢其是否在集合中需要進行o($w_$)的雜湊值計算。

空間複雜度:o($\sum w_$),儲存單詞的空間開銷。

class solution             

}for (string word : ust)

return res;

}};

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 中索引的位置開始讀取字串,直到 結束,來恢復我們之前的單詞...