給定乙個單詞列表,我們將這個列表編碼成乙個索引字串 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] 。
本題主要的難點: 怎麼判斷乙個字串是另外乙個字串的字尾
做法: 字典樹可以方便地解決判斷乙個字串是不是另外乙個字串地字首問題,而字尾問題只需將待判斷地字串翻轉(reverse)就再次轉變為了字首問題
class solution
}void query(string x)
}for (int i = 0; i <= 26; ++i)
if (trie[p][i] != 0) return;
len = len + x.size() + 1;
}int minimumlengthencoding(vector& words)
for (auto x:words)
}return len;
}};
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 中索引的位置開始讀取字串,直到 結束,來恢復我們...