【Leetcode】820. Short Encoding of Words
创始人
2024-03-18 07:13:41
0

题目地址:

https://leetcode.com/problems/short-encoding-of-words/description/

给定一个英文小写字母的单词列表AAA,要求构造一个最短的字符串sss作为该列表的一种编码,编码方式为:
1、sss以'#'结尾;
2、解码结果搭配一个非负整数数组BBB,BBB与AAA长度相等,并且从s[B[i]]s[B[i]]s[B[i]]开始向后直到最近的'#'之间的子串即为A[i]A[i]A[i]。
求sss的长度。

可以用Trie。如果某两个个串,其中一个是另一个的后缀,显然可以用那个最长的来避免编码的重复。我们在AAA上定义一个偏序关系,如果aaa是bbb的后缀,则a'#'结尾)之总和。可以将AAA中所有字符串ttt翻转一下然后加入Trie中,将沿途的所有节点做标记(除了插入完成之后所到达的节点),然后再求所有未标记的节点所对应的字符串的长度(加111)的总和即可。代码如下:

class Solution {public:struct Node {Node* ne[26];bool valid;Node() : valid(true) { fill(ne, ne + 26, nullptr); }};Node* root;void insert(string& s, unordered_map& mp) {auto* p = root;for (char ch : s) {p->valid = false;int idx = ch - 'a';if (!p->ne[idx]) p->ne[idx] = new Node();p = p->ne[idx];}mp[p] = s.size();}int minimumLengthEncoding(vector& words) {root = new Node();unordered_map mp;for (int i = 0; i < words.size(); i++) {auto& s = words[i];reverse(s.begin(), s.end());insert(s, mp);}int res = 0;for (auto& [p, len] : mp)if (p->valid) res += len + 1;return res;}
};

时空复杂度O(∑lAi)O(\sum l_{A_i})O(∑lAi​​)。

相关内容

热门资讯

原创 红... 当今国际局势愈发复杂,俄乌战场的战火依旧纷飞,近期红军城的激烈攻防战中,一则异常动向引发国际关注——...
多里安·芬尼-史密斯助阵火箭圣... 圣诞节总是NBA赛程中备受瞩目的日子,而今年的圣诞大战,休斯顿火箭队和洛杉矶湖人队的对决无疑成为了焦...
卧室门一关,湿被子一堵!七旬夫... 深夜熟睡中 刺鼻的浓烟突然涌入卧室 客厅已是一片火海 这样的绝境下 两位七旬老人居然可以冷静应对 成...
原创 新... 中期选举临近,共和党选票落后一大步,留给特朗普的时间已经不多了。谁料,对华关税井沦为“选举筹码”,那...
广州市委常委、常务副市长、黄埔... 12月26日,南方+客户端发布消息称,近日,广东省委决定:陈杰同志任江门市委委员、常委、书记;陈岸明...
施工栈桥未设安全围挡致汽车坠河... 极目新闻记者 邓波 据新华社报道,12月13日下午,位于广东江门鹤山市的南新高速西江特大桥施工栈桥发...
犇星新材闯关北交所!期内毛利率... 12月25日,湖北犇星新材料股份有限公司(简称“犇星新材”)在北交所披露招股书。 资料显示,犇星新材...
毕节首部营商环境法规即将实施 ... 12月25日,毕节市政府新闻办举行新闻发布会,对《毕节市优化营商环境条例》进行宣传解读。该《条例》是...
情侣海外旅行时当地“结婚”,婚... 一趟浪漫之旅,一纸境外婚书,让情侣二人归国后成为“已婚”人士。境外婚姻登记在国内“有效”吗?现双方产...
原创 没... 新账旧账一起算,高市早苗万万没有想到,经济受创的日本,如今又可能面临支付数亿元的账单。日韩之间的历史...