單詞的壓縮編碼

2021-10-04 12:41:51 字數 1108 閱讀 2281

#1、描述820

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

每個單詞都是小寫字母 。

通過次數13,156提交次數30,905

#2、思路

字尾轉字首,原地反轉,排序,如果前乙個單詞,是後乙個單詞的字首,則一定緊跟前乙個單詞的後面,判斷一下如果前乙個單詞是後乙個單詞的字首,則捨去前面單詞的長度,

#3、notes

1、reverse()函式,可以直接把乙個字串反轉,

2、sort()函式,也可以直接把string型別的單詞元素構成的vector,按字典序排序

sort(words.begin(),words.end());

#4、code

class solution {

public:

int minimumlengthencoding(vector& words ){

int n=words.size();  // 統計長度

for(int i=0;ireverse(words[i].begin(),words[i].end()); //原地反轉vector各元素,反轉各個字串

sort(words.begin(),words.end());  // 字串排序,根據字典序排序

int res=0;

for(int i=0;iif(i+1else

res+=words[i].size()+1;

return res;

LeedCode 單詞的壓縮編碼

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

leetcode單詞的壓縮編碼

1.反轉 排序 當乙個字串是另乙個字串的字尾時,該字串可以省略,如me是time的字尾 首先遍歷字串陣列,反轉每乙個字串,然後將字串陣列按照字典需排列 如time me bell 反轉emit em lleb 按字典序排列 em emit lleb 只需要比較相鄰的字串是否後乙個包含前乙個即可 如e...

820 單詞的壓縮編碼

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