200330题(820.单词的压缩编码(字典树))

2023-11-30 09:08

本文主要是介绍200330题(820.单词的压缩编码(字典树)),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
从0位置开始遍历字符串S,遇到#停止,得到time 从2位置开始遍历字符串S,遇到#停止,得到me 从5位置开始遍历字符串S,遇到#停止,得到bell.

字典树的建立详见实现 Trie (前缀树、字典树)

法1思路:字典树:根据列表中单词的长度由长到短进行排序,排好序后对每个单词反转顺序,最后再插入字典树,插入时通过标志位isNew判断是否为新单词即可。

class Trie {
private:bool isEnd;Trie* next[26];
public:Trie(){isEnd = false;memset(next, 0, sizeof(next));}int insert(string word) {bool isNew = false;//判断是否为新单词Trie* node = this;for (char c : word){if (node->next[c - 'a'] == NULL){node->next[c - 'a'] = new Trie();isNew = true;//是新单词(因为创建了新结点,所以是新单词)}node = node->next[c - 'a'];}node->isEnd = true;return isNew ? word.length() + 1 : 0;//+1是因为还有#}};class Solution {
public:bool static cmp(const string str1, const string str2){return str1.length() > str2.length();}int minimumLengthEncoding(vector<string>& words){Trie*trie = new Trie();//根据列表中单词的长度由长到短进行排序,排好序后对每个单词反转顺序,最后再插入字典树sort(words.begin(), words.end(), cmp);for (int i = 0; i < words.size(); i++){reverse(words[i].begin(), words[i].end());}int res = 0;for (string word : words){res += trie->insert(word);}return res;}
};

法2思路:利用set去重,然后对于set中的每个字符串,删除set中与其后缀重复的字符串。

class Solution {
public:int minimumLengthEncoding(vector<string>& words) {unordered_set<string>myset(words.begin(), words.end());//利用迭代器构造set对象(自动去重)for (const string& s : myset){for (int i = 1; i < s.size(); i++){myset.erase(s.substr(i));}}int len = 0;for (auto it = myset.begin(); it != myset.end(); it++){len += (*it).size() + 1;}return len;}
};
string s = "abcde";
cout << s.substr(1);//返回的是string类的对象,结果为bcde

这篇关于200330题(820.单词的压缩编码(字典树))的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/436452

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

VSCode中C/C++编码乱码问题的两种解决方法

《VSCode中C/C++编码乱码问题的两种解决方法》在中国地区,Windows系统中的cmd和PowerShell默认编码是GBK,但VSCode默认使用UTF-8编码,这种编码不一致会导致在VSC... 目录问题方法一:通过 Code Runner 插件调整编码配置步骤方法二:在 PowerShell

Python如何实现读取csv文件时忽略文件的编码格式

《Python如何实现读取csv文件时忽略文件的编码格式》我们再日常读取csv文件的时候经常会发现csv文件的格式有多种,所以这篇文章为大家介绍了Python如何实现读取csv文件时忽略文件的编码格式... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍我们再日常读取csv文件的时候经常

基于Python实现多语言朗读与单词选择测验

《基于Python实现多语言朗读与单词选择测验》在数字化教育日益普及的今天,开发一款能够支持多语言朗读和单词选择测验的程序,对于语言学习者来说无疑是一个巨大的福音,下面我们就来用Python实现一个这... 目录一、项目概述二、环境准备三、实现朗读功能四、实现单词选择测验五、创建图形用户界面六、运行程序七、

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,