leetcode單詞的壓縮編碼

2021-10-04 12:27:17 字數 711 閱讀 6824

1.反轉+排序

當乙個字串是另乙個字串的字尾時,該字串可以省略,如me是time的字尾

首先遍歷字串陣列,反轉每乙個字串,

然後將字串陣列按照字典需排列

如time me bell 

反轉emit em lleb

按字典序排列 em emit lleb

只需要比較相鄰的字串是否後乙個包含前乙個即可

如em 是emit的字首,則跳過em

**如下:

class solution {

public:

int minimumlengthencoding(vector& words) {

//將words中每個字串都反轉,然後做字首匹配

for(int i=0;i2.不反轉+自定義排序

方法1在反轉的時候使用了額外的空間,可以不用反轉,自定義排序規則

按照字串中最後乙個單詞的字典序進行排列

如time me bell排序之後是

me time

bell

同時需要自己寫函式判斷字尾匹配

3.字典樹

每個字串反向建立字典樹,字尾匹配轉化為字首匹配

**如下:

Leetcode之 單詞的壓縮編碼

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

單詞的壓縮編碼

1 描述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中索引的位置開始讀取字串,直到 結束,來恢復我們之前的單詞列表。那麼成功...