【LeetCode最详尽解答】271_编码和解码字符串 Encode-and-Decode-Strings

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家!

链接:

  • 271_编码和解码字符串

直觉

我观看了 Neetnode 关于这个问题的视频。如果我们只是将 ['hello', 'world'] 编码为 'helloworld',然后解码回来,我们将不知道在哪里分隔这些单词。我们可以考虑使用特殊字符来分隔它们。例如,我们可以添加 #,使其变为 'hello#world'

然而,如果单词是 ['hello', 'wo#rld'],编码后会变成 'hello#wo#rld',解码回来会得到 ['hello', 'wo', 'rld']。这意味着仅使用特殊字符并不是一种可靠的方法。

相反,我们应该将每个单词的长度集成到编码信息中。例如,将 ['hello', 'world'] 编码为 '5hello5world' 可能有效,但如果输入是 ['1hello', 'world'],它会编码为 '61hello5world',使得第一个单词看起来长度为 61。因此,仅添加整数或特殊字符是不够的。

更好的方法是将长度信息与特殊字符结合起来。例如,将 ['hello', 'world'] 编码为 '5#hello5#world'

在解码过程中,我们使用两个指针,ij。指针 i 用于遍历编码字符串,而指针 j 用于定位将每个单词的长度与单词本身分开的 # 字符。这帮助我们确定每个单词的长度并相应地提取单词。

方法

要编码一个字符串列表,我们将每个字符串与其长度和一个特殊字符 # 连接在一起。这样,在解码过程中,我们可以轻松识别每个字符串的长度并相应地提取它。

编码:

  1. 初始化一个空的结果字符串。
  2. 对于输入列表中的每个字符串,将其长度、一个 # 字符和字符串本身附加到结果字符串中。

解码:

  1. 初始化一个空的结果列表。
  2. 使用两个指针,ij
    • i 遍历编码字符串。
    • j 定位 # 字符以确定每个单词的长度。
  3. 迭代编码字符串,使用 # 字符作为分隔符来识别长度和相应的子字符串。
  4. 根据它们的长度提取子字符串并将它们附加到结果列表中。

复杂度

  • 时间复杂度
    O ( N ) O(N) O(N)
    • 其中 N N N 是输入列表中所有字符串的总长度。我们在编码和解码过程中分别遍历每个字符一次。
  • 空间复杂度
    O ( N ) O(N) O(N)
    • 其中 N N N 是输入列表中所有字符串的总长度。我们在解码过程中使用额外的空间存储编码字符串和结果列表。

代码

class Solution:def encode(self, strs: List[str]) -> str:res = ''for s in strs:res += str(len(s)) + '#' + sprint(res)return resdef decode(self, s: str) -> List[str]:res = []i = 0while i < len(s):j = iwhile s[j] != '#':j += 1length = int(s[i:j])i = j + 1j = i + lengthres.append(s[i:j])i = jreturn res

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

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

相关文章

解锁多线程新纪元:StampedLock源码深度剖析与实战应用

1. 引言 在Java的并发编程中,StampedLock是一个相对较新的锁机制,自Java 8起引入,旨在解决先前版本中如ReentrantReadWriteLock等锁实现所面临的问题,如锁饥饿等。StampedLock提供了一个灵活且高性能的并发控制机制,允许读者/写者锁、乐观读锁以及锁状态的精确控制。 2. …

花卉识别-python-pytorch-CNN深度学习含数据集+pyqt界面

代码下载地址&#xff1a; https://download.csdn.net/download/qq_34904125/89383063 本代码是基于python pytorch环境安装的。 下载本代码后&#xff0c;有个requirement.txt文本&#xff0c;里面介绍了如何安装环境&#xff0c;环境需要自行配置。 或可直接参考下面博文…

前端学习资源推荐

W3C 官网 网址: www.w3c.org简介: 万维网联盟&#xff08;World Wide Web Consortium&#xff09;的官方网站&#xff0c;提供最新的Web标准和规范。 W3School 网址: www.w3school.com.cn简介: 提供全面的Web开发教程&#xff0c;包括HTML, CSS, JavaScript等。 MDN Web Do…

qgis导入excel文件

arcgis有导入Excel的功能&#xff0c;只需要指定横纵坐标和坐标系即可。可是我对arcgis不熟悉&#xff0c;查了一下QGIS是否有导入Excel的功能。暂时没查到直接导入Excel的文档&#xff0c;只查到可以导入csv格式的数据。 2.1、将Excel另存为csv 略。wps、ms office Excel都能…

Stable Diffusion【应用篇】【艺术写真】:粘土风之后陶瓷风登场,来看看如何整合AI艺术写真吧

在国外的APP Remini引爆了粘土滤镜后&#xff0c;接着Remini又推出了瓷娃娃滤镜。相当粘土滤镜&#xff0c;个人更喜欢瓷娃娃滤镜&#xff0c;因为陶瓷工艺更符合东方艺术审美。 下面我们就来看看陶瓷特效在AI写真方面的应用。话不多说&#xff0c;我们直接开整。 关于粘土整…

Real3D:利用真实世界图像扩展3D重建模型

原理&#xff1a; 在3D重建领域&#xff0c;单视图重建任务由于其固有的不确定性而充满挑战。为了克服这一难题&#xff0c;研究者们一直在探索如何利用大型数据集训练模型以学习形状和纹理的通用先验知识。然而&#xff0c;现有训练方法依赖于合成数据或多视图捕获&#xff0c…

获取在 Windows 10/11 上编辑 PDF 的 6 大方法(免费)

作为全球最受欢迎的操作系统&#xff0c;Microsoft Windows的每一次升级都引起了公众的关注。其中&#xff0c;Windows 10 和 Windows 11 是最常用的版本。 一些需要在 Windows 11/10 上处理繁琐的 PDF 任务的人可能会问&#xff1a;Microsoft Windows 有 PDF 编辑器吗&#x…

一篇文章教你学会公众号IP写作(新手小白必备)

最近在带大家玩公众号 IP 写作&#xff0c;很多新手小白常问的问题&#xff0c; 1 什么是IP写作&#xff1f; “IP写作&#xff0c;简单来说&#xff0c;就是通过在公众号上持续写出有价值的文章&#xff0c;来建立个人影响力。 让读者了解你、信任你、找你付费。实现高价值、强…

Java版SaaS模式云HIS系统源码Java+Spring+SpringBoot+SpringMVC 基层卫生健康云HIS源码

Java版SaaS模式云HIS系统源码JavaSpring&#xff0b;SpringBoot&#xff0b;SpringMVC 基层卫生健康云HIS源码 云HIS全称为基于云计算的医疗卫生信息系统&#xff08;Cloud-BasedHealthcareInformationSystem&#xff09;&#xff0c;是运用云计算、大数据、物联网等新兴信息技…

CAPL通过addTimeToMeasurementStartTime或者getLocalTime获取本地时间

文章目录 getLocalTimeaddTimeToMeasurementStartTimegetLocalTime long tm[9]; getLocalTime(tm); // now tm contains the following entries: // tm[0] = 3; (seconds) // tm[1] = 51; (minutes) // tm[2] = 16; (hours)

【荷包支付-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

基于ResNet-18的简单分类(新手,而且网络效果不咋滴,就是学个流程)

引言 先看问题&#xff1a; 我手边有一数据集&#xff0c;然后我想分分类&#xff01;~~ 咳咳&#xff0c;最近刚做了一个&#xff1a;训练集有1143张&#xff0c;分为5类&#xff0c;里面图片是打乱的。测试集有248张&#xff0c;想把它分分类看看咋样。 再看一下效果: …

目前市面上DIY高端空心耳机壳使用的透明原材料是什么?

目前市面上DIY高端空心耳机壳使用的透明原材料是什么&#xff1f; DIY制作耳机壳的UV树脂胶是一种单组份、通过紫外线光固化的胶粘剂&#xff0c;具有低能量固化、收缩低、发热量低、高透明、耐盐酸、耐黄变好、高硬度、韧性好、成型好等特点。这种胶粘剂非常适合用于制作耳机壳…

照明乙级资质换证申请中的环保要求

在照明乙级资质换证申请中&#xff0c;环保要求是一个重要的考量因素。以下是关于环保要求的详细解释和归纳&#xff1a; 一、法规遵循与标准更新 严格遵守国家和地方关于环境工程设计和施工的法律法规&#xff0c;包括但不限于《中华人民共和国环境保护法》、《建设项目环境保…

JBoss面试题精要和参考答案(3万字长文)

目录 JBoss应用服务器的主要功能是什么? 描述JBoss中的目录结构。 JBoss支持哪些Java EE规范? 什么是JBoss的独立模式和域模式? JBoss AS和WildFly有什么区别? 如何在Linux服务器上安装JBoss? 描述如何在JBoss中增加Java堆内存。 如何以独立模式启动JBoss? 解释…

手机IP地址距离多远会变:解析移动设备的网络定位奥秘

在移动互联网时代&#xff0c;手机IP地址扮演着至关重要的角色&#xff0c;它不仅是我们访问网络的基础&#xff0c;还常常与网络定位、地理位置服务等相关联。那么&#xff0c;手机IP地址在距离多远时会发生变化呢&#xff1f;手机IP地址距离多远会变&#xff1f;下面跟着虎观…

苹果AI功能,GPU内存瓶颈,大气预测模型,Chrome内置Gemini

智源社区 刚刚&#xff01;苹果发布Apple Intelligence&#xff0c;官宣免费接入ChatGPT&#xff0c;Siri迎来重磅更新 大模型竞速赛鸣枪开跑后&#xff0c;苹果似乎已经脱离了第一梯队&#xff0c;曾经的行业风向标并没有像其他大厂那样频繁地宣讲 AI&#xff0c;加之缺乏能…

javaweb要点和难点具体应用场景案例

JavaWeb是指使用Java技术来解决Web互联网领域问题的技术栈。它涵盖了Web服务端和客户端的开发,为Web应用提供了丰富的功能和强大的支持。以下是关于JavaWeb的详细介绍: 1. 技术和应用背景 JavaWeb利用了Java语言的跨平台性和安全性,使得基于JavaWeb开发的应用可以在不同的…

LVS_Director + KeepAlived + 邮件报警

目录 一. 环境准备 二. 对master和backup操作 三. 配置master主机 四. 配置backup主机 六. 验证虚拟IP 七. 配置后端两个web服务器 对web1和web2主机都进行如下操作&#xff1a; 单独修改web1主机 单独修改web2主机 验证 八. 设置邮件报警 一. 环境准备 KeepAlive…

深入探索 Spring Boot 自定义启动画面

目录 引言什么是 Spring Boot 启动画面Spring Boot 默认启动画面为什么要自定义启动画面如何自定义 Spring Boot 启动画面 修改配置文件使用 Banner 接口通过图片实现启动画面ASCII 艺术画的应用 进阶&#xff1a;基于环境变量的动态 Banner多模块项目中的启动画面Spring Boot…