我理解有错误 ["self","fish","hike"] 压缩编码之后就成为“selfishike#”其实是错误的,正确的压缩方式是“self#fish#hike#,导致我一直卡在这里。只有下一个单词完全是上一个单词的后缀才可以改写如["time","me",“bell”],即是“time#bell”。
解题思路:把每个字符串都倒序,然后排序,只需要比较相邻的字符串即可
class Solution {
public:
int minimumLengthEncoding(vector<string>& words) {
int size=words.size();
if(size==0)
return 0;
// if(size==1)
// return words[0].size()+1;
for(auto &s:words)
{
reverse(s.begin(),s.end());
}
sort(words.begin(),words.end());
int number=0;
for(int i=0;i<size-1;i++)
{
int wordsize=words[i].size();
if(words[i]==words[i+1].substr(0,wordsize))
continue;
number+=wordsize+1;
}
return number+=words.back().size()+1;
}
};