[NeetCode150] String Encode and Decode

String Encode and Decode

Design an algorithm to encode a list of strings to a single string. The encoded string is then decoded back to the original list of strings.

Please implement encode and decode

Example 1:

Input: [“neet”,“code”,“love”,“you”]

Output:[“neet”,“code”,“love”,“you”]

Example 2:

Input: [“we”,“say”,“:”,“yes”]

Output: [“we”,“say”,“:”,“yes”]

Constraints:

0 <= strs.length < 100
0 <= strs[i].length < 200
strs[i] contains only UTF-8 characters.

Solution

The constraints say that “strs[i] contains only UTF-8 characters”, so it is obvious to think about converting characters into their corresponding hex code, which only contains char 0-9 and a-z. Once we convert them into hex code, we can easily put separating symbol, such as , between each string to merge them into a single string, and then split them apart by our pre-defined separating symbol.

In Python, to convert one string into bytes type, we need str.encode("utf-8"), then we use bytes.hex() convert the bytes into hex form and use str() to save them as string (If you do not do so, ",".join(bytes) will lead to a error).

To decode, just split the string by str.split() first, then convert hex string into bytes by bytes.fromhex(). Finally, use bytes.decode("utf-8") converting the bytes back to string.

Special Notice:
The test data contains edging situation like [](empty list) and [""] empty string. In my case, I specially deal with the former situation.

Full code:

class Solution:def encode(self, strs: List[str]) -> str:def encode_one_word(word: str) -> str:utf8_bytes = word.encode("utf-8")hex_rep = utf8_bytes.hex()return str(hex_rep)if len(strs) == 0:return "EMPTY"encoded_list = []for string in strs:encoded_list.append(encode_one_word(string))return ",".join(encoded_list)def decode(self, s: str) -> List[str]:if s == "EMPTY":return []encoded_list = s.split(",")decoded_list = []for code in encoded_list:utf8_bytes = bytes.fromhex(code)decoded_list.append(utf8_bytes.decode('utf-8'))return decoded_list

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/43470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 上vscode +cmake的debug调试配置方法

在ubuntu配置pcl点云库以及opencv库的时候&#xff0c;需要在CMakeLists.txt中加入相应的代码。配置完成后&#xff0c;无法调试&#xff0c;与在windows上体验vs studio差别有点大。 找了好多调试debug配置方法&#xff0c;最终能用的有几种&#xff0c;但是有一种特别好用&a…

ubuntu部署minio集群

minio集群介绍 官方文档&#xff1a;https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html 本方案采用在多节点多驱动器 (MNMD) 或“分布式”配置部署 MinIO。 MNMD 部署提供企业级性能、可用​​性和可扩展性&#…

jmeter-beanshell学习4-beanshell截取字符串

再写个简单点的东西&#xff0c;截取字符串&#xff0c;参数化文件统一用csv&#xff0c;然后还要用excel打开&#xff0c;如果是数字很容易格式就乱了。有同事是用双引号把数字引起来&#xff0c;报文里就不用加引号了&#xff0c;但是这样beanshell处理起来&#xff0c;好像容…

Facebook社交平台的未来发展趋势分析

随着科技和社交需求的不断演变&#xff0c;Facebook作为全球最大的社交平台之一&#xff0c;其未来发展的趋势备受关注。从技术创新到社会影响&#xff0c;Facebook正在经历着前所未有的变化和挑战。本文将探讨Facebook未来发展的几个关键趋势&#xff0c;并分析其可能的影响和…

[Linux][Shell][Shell变量]详细讲解

目录 1.本地变量2.变量定义3.取出变量值4.特殊变量5.特殊状态变量6.shell内置的变量命令1.echo2.eval3.exec 7.截取字符串8.特殊shell扩展变量处理1.语法2.应用场景 1.本地变量 定义Shell变量&#xff0c;变量名不需要加$本地变量只在⽤户当前shell⽣存期中有效 2.变量定义 变…

SpringBoot防止重复提交 AOP+自定义注解+redis

1.什么是重复提交呢 在Web开发中&#xff0c;重复提交&#xff08;也称为双重提交或重复表单提交&#xff09;是指用户在没有明确意图的情况下&#xff0c;多次提交同一表单的情况。这可能是由于用户多次点击提交按钮、表单提交过程中的网络延迟导致用户重复点击、或者由于浏览…

双向全桥隔离dc-dc变换器(DAB)

DAB(dual active bridge) 双向全桥隔离dc-dc变换器&#xff08;DAB&#xff09;和Buck/Boost不同&#xff0c;该变换器通过交流电感进行功率传输&#xff0c;其调制和控制不适合直接借鉴已有的研究。 调制挑战&#xff1a;开关网络相对复杂&#xff0c;调制自由度较多&#x…

揭秘SQL Server数据库选项:性能与行为的调控者

揭秘SQL Server数据库选项&#xff1a;性能与行为的调控者 在SQL Server的世界中&#xff0c;数据库选项是那些可以调整以优化数据库性能和行为的设置。它们是数据库管理员和开发者的得力助手&#xff0c;通过精细调控&#xff0c;可以显著提升数据库的响应速度和资源利用率。…

MySQL MVCC

总结自小林coding&#xff0c;bojiangzhou 脏读、不可重复读、幻读 说的都是并发读取的问题&#xff0c;最简单的方式就是给记录加一把锁&#xff0c;不管是更新、读取记录都需要竞争到这把锁之后才能操作。但这种方式的并发性能可想而知会有多么低。 于是 InnoDB 就设计了MVC…

C#——二进制流序列化和反序列化

C#二进制流序列化和反序列化 在C#中&#xff0c;可以使用BinaryFormatter来进行二进制的序列化和反序列化。 首先&#xff0c;定义一个可序列化的类 [Serializable] public class MyObject {public int IntProperty { get; set; }public string StringProperty { get; set; …

ubuntu 上配置开机自动启动ssh

一般安装了就会自动启动。但是各种rc.local, cron都测试了一下&#xff0c;还是这个systemd有效 使用 systemd 服务 创建文件 sudo nano /etc/systemd/system/custom-ssh.service [Unit] DescriptionStart SSH service at boot Afternetwork.target[Service] ExecStart/usr/…

软件开发(续).NET框架

1.解释一下.NET框架中的CLR&#xff08;公共语言运行时&#xff09;是什么&#xff0c;以及它的作用和功能是什么&#xff1f; CLR&#xff08;Common Language Runtime&#xff09;的概念和作用 在.NET框架中&#xff0c;CLR&#xff08;Common Language Runtime&#xff09…

代码优化(2)——小程序登录

验证身份的时候&#xff0c;依赖的是cookie里面的token $this->request->server(HTTP_TOKEN,$this->request->request(token, \think\Cookie::get(token))) 小程序的交互权限验证&#xff0c;一般放到header里面进行鉴权&#xff0c;极少是通过cookie来传递参数验证…

一起来了解深度学习中的“梯度”

文章目录 前言一、什么是梯度&#xff1f;二、梯度计算三、优化算法四、示例五、梯度的作用六、形象化解释七、如果完全不懂公式可以实现这个算法吗&#xff1f;1. 使用 Hugging Face Transformers 实现深度学习任务1) 安装库2) 加载预训练模型和分词器3) 准备数据4) 进行推理5…

LeetCode HOT100(二)双指针

移动0 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 解法1&#xff1a;双指针交换 指针L&…

“论基于构件的软件开发方法及其应用”写作框架,软考高级论文,系统架构设计师论文

论文真题 基于构作的软件开发 (Component-Based Software Development&#xff0c;CBSD) 是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。基于构件的软件系统中的构件可以是COTS &#xff08;Commercial-Off-the-Shelf&#xff09;构件&#x…

Spring Boot轻松整合Minio实现文件上传下载功能

一、Linux 安装Minio 安装 在/root/xxkfz/soft目录下面创建文件minio文件夹&#xff0c;进入minio文件夹&#xff0c;并创建data目录&#xff1b; [rootxxkfz soft]# mkdir minio [rootxxkfz soft]# cd minio [rootxxkfz minio]# mkdir data 执行如下命令进行下载 [rootxx…

Java内存划分详解:从基础到进阶

Java内存划分详解&#xff1a;从基础到进阶 1. 程序计数器&#xff08;Program Counter Register&#xff09;2. Java虚拟机栈&#xff08;Java Virtual Machine Stack&#xff09;3. 堆&#xff08;Heap&#xff09;4. 方法区&#xff08;Method Area&#xff09;5. 运行时常量…

DDD架构面试问题

基础概念 什么是领域驱动设计&#xff08;DDD&#xff09;&#xff1f; 请解释一下DDD的核心思想和目标。 DDD中的领域&#xff08;Domain&#xff09;是什么&#xff1f; 请描述一下领域的概念以及它在软件开发中的重要性。 什么是限界上下文&#xff08;Bounded Context&am…

ArduPilot开源代码之OpticalFlow_backend

ArduPilot开源代码之OpticalFlow_backend 1. 源由2. Library设计3. 重要例程3.1 OpticalFlow_backend::_update_frontend3.2 OpticalFlow_backend::_applyYaw 4. 总结5. 参考资料 1. 源由 光流计是一种低成本定位传感器&#xff0c;所有的光流计设备传感驱动代码抽象公共部分统…