Given a list of words, we may encode it by writing a reference string S and a list of indexes A.

For example, if the list of words is ["time", "me", "bell"], we can write it as S = "time#bell#" and indexes = [0, 2, 5].

Then for each index, we will recover the word by reading from the reference string from that index until we reach a "#" character.

What is the length of the shortest reference string S possible that encodes the given words?

Example:

Input: words = ["time", "me", "bell"]
Output: 10
Explanation: S = "time#bell#" and indexes = [0, 2, 5].

Note:

  1. 1 <= words.length <= 2000.
  2. 1 <= words[i].length <= 7.
  3. Each word has only lowercase letters.

Runtime: 72 ms, faster than 65.22% of C++ online submissions for Short Encoding of Words.

#include <vector>
#include <string>
#include <algorithm>
using namespace std; struct TrieNode {
string word;
TrieNode* children[];
TrieNode(){
for(int i=; i<; i++) {
children[i] = nullptr;
}
}
}; class Trie {
public:
TrieNode* root;
void buildTrie(vector<string> words){
root = new TrieNode();
for(auto w : words) {
TrieNode* tmproot = root;
for(int i=w.size()-; i>=; i--) {
int idx = w[i] - 'a';
if(!tmproot->children[idx]) {
tmproot->children[idx] = new TrieNode();
}
tmproot = tmproot->children[idx];
}
tmproot->word = w;
}
}
}; class Solution {
public:
int minimumLengthEncoding(vector<string>& words) {
Trie trie = Trie();
trie.buildTrie(words);
TrieNode* root = trie.root;
vector<string> ret;
getroot2leaflength(root, ret);
int val = ;
for(int i=; i<ret.size(); i++) {
val += ret[i].size() + ;
}
return val;
}
void getroot2leaflength(TrieNode* root, vector<string>& ret) {
bool leaf = true;
for(int i=; i<; i++) {
if(root->children[i]) {
leaf = false;
getroot2leaflength(root->children[i], ret);
}
}
if(leaf) ret.push_back(root->word);
}
};

LC 820. Short Encoding of Words的更多相关文章

  1. 【leetcode】820. Short Encoding of Words

    题目如下: 解题思路:本题考查就是找出一个单词是不是另外一个单词的后缀,如果是的话,就可以Short Encode.所以,我们可以把words中每个单词倒置后排序,然后遍历数组,每个元素只要和其后面相 ...

  2. 【LeetCode】820. 单词的压缩编码 Short Encoding of Words(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode-cn.com/problems/short- ...

  3. [Swift]LeetCode820. 单词的压缩编码 | Short Encoding of Words

    Given a list of words, we may encode it by writing a reference string S and a list of indexes A. For ...

  4. [LeetCode] Short Encoding of Words 单词集的短编码

    Given a list of words, we may encode it by writing a reference string S and a list of indexes A. For ...

  5. Short Encoding of Words

    2018-07-02 09:48:48 问题描述: 问题求解: 方法一.问题给了规模n = 2000,也就是说用BF在O(n^2)的时间复杂度可以过,因此,第一个方法就是BF,但是需要注意的是这里已经 ...

  6. All LeetCode Questions List 题目汇总

    All LeetCode Questions List(Part of Answers, still updating) 题目汇总及部分答案(持续更新中) Leetcode problems clas ...

  7. Swift LeetCode 目录 | Catalog

    请点击页面左上角 -> Fork me on Github 或直接访问本项目Github地址:LeetCode Solution by Swift    说明:题目中含有$符号则为付费题目. 如 ...

  8. 【Leetcode周赛】从contest-81开始。(一般是10个contest写一篇文章)

    Contest 81 (2018年11月8日,周四,凌晨) 链接:https://leetcode.com/contest/weekly-contest-81 比赛情况记录:结果:3/4, ranki ...

  9. Get RSA public key ASN.1 encode from a certificate in DER format

    RSA public key ASN.1 encode is defined in PKCS#1 as follows: RSAPublicKey :: = SEQUENCE  {     modul ...

随机推荐

  1. ASP.NET IHttpModule IHttpHandler IHttpHandlerFactory 拦截请求

    先来看看代码,拦截所有Http请求类.下面包含了两种类的集成 IHttpModule IHttpHandlerFactory using System; using System.Collection ...

  2. vue 之img的src是动态渲染时(即 :src=' ' )不显示 踩坑

    问题: <img :src="item.image ? `../../assets/image/${item.image}` : ''" alt="image&qu ...

  3. solr schema.xml配置

    solr使用_version_来做文档的版本控制和修改时加锁(乐观锁) <field name="_version_" type="long" index ...

  4. 【2-sat】8.14B. 黑心老板

    2-sat 只写过板子 题目大意 有一个长度为$k$取值只有01的序列,现在$n$个人每人下注三个位置,请构造一个序列使每个人最多猜对一个位置 $k\le 5000,n \le 10000$ 题目分析 ...

  5. 洛谷P1006 传纸条【dp】

    题目:https://www.luogu.org/problemnew/show/P1006 题意: 给定一个m*n的矩阵,从(1,1)向下或向右走到(m,n)之后向上或向左走回(1,1),要求路径中 ...

  6. [ES2015] Number.isNaN instead of isNaN

    const result = Number('55px'); // isNaN "NaN" console.log(isNaN(result)); // true console. ...

  7. VUE:Select2

    <template> <div> <ul class="skill"> <li v-for='item of list' v-on:cli ...

  8. zuul网管配置其他服务时 HTTP Status 500 – Internal Server Error

    1.这个错误是由三个原因导致的 (1).我在给类的接口命名的时候前面少加了一个/ (2)给zuul配置路由的时候多加了个服务名,serviceId名称就是spring的name,而不是eureka注入 ...

  9. winform中的Windows Media Player播放器设置

    namespace WindowsMediaPlayer{ public partial class Form1 : Form { Form2 form2;//声明from2窗体 public For ...

  10. Linux 防火墙遇到的问题

    一直报这个错误,写个博客来记录一下问题 在centos7中执行service iptables start 报如下错误 执行如下命令 systemctl stop firewalld systemct ...