給定乙個單詞列表,我們將這個列表編碼成乙個索引字串 s 與乙個索引列表 a。
例如,如果這個列表是 [「time」, 「me」, 「bell」],我們就可以將其表示為 s = 「time#bell#」 和 indexes = [0, 2, 5]。
對於每乙個索引,我們可以通過從字串 s 中索引的位置開始讀取字串,直到 「#」 結束,來恢復我們之前的單詞列表。
那麼成功對給定單詞列表進行編碼的最小字串長度是多少呢?
解題思路:本題一開始想到的思路是找相同的字尾,因為相同字尾的單詞才能一起編碼,但是越往後面思考,發現會把問題搞複雜。然後直接看網友grandyang部落格的解法,基本思路是只有短的單詞才能合併到長的單次中,然後先考慮處理長單詞,那麼這裡就要先對words排序。然後遍歷words陣列,遍歷的過程中,檢視當前的單詞是否在已拼接的字串中,若在則要check一下,單詞尾部的下乙個元素是否是"#",否則將單詞拼接到結果字串中,並在尾部追加"#".
class
solution);
string res;
for(
auto word : words)
}return res.
size()
;}};
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 中索引的位置開始讀取字串,直到 結束,來恢復我們...