抓住问题的关键解决LeetCode第3337题字符串转换后的长度II

news2024/11/6 21:12:58

3337.字符串转换后的长度II

难度:困难

问题描述:

给你一个由小写英文字母组成的字符串s,一个整数t表示要执行的转换次数,以及一个长度为26的数组nums。每次转换需要根据以下规则替换字符串s中的每个字符:

将s[i]替换为字母表中后续的nums[s[i]-'a']个连续字符。例如,如果s[i]='a'且nums[0]=3,则字符'a'转换为它后面的3个连续字符,结果为"bcd"。

如果转换超过了'z',则回绕到字母表的开头。例如,如果s[i]='y'且nums[24]=3,则字符'y'转换为它后面的3个连续字符,结果为"zab"。

返回恰好执行t次转换后得到的字符串的长度。

由于答案可能非常大,返回其对109+7取余的结果。

示例1:

输入:s="abcyy",t=2,nums=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2]

输出:7

解释:

第一次转换(t=1)

'a'变为'b'因为nums[0]==1

'b'变为'c'因为nums[1]==1

'c'变为'd'因为nums[2]==1

'y'变为'z'因为nums[24]==1

'y'变为'z'因为nums[24]==1

第一次转换后的字符串为:"bcdzz"

第二次转换(t=2)

'b'变为'c'因为nums[1]==1

'c'变为'd'因为nums[2]==1

'd'变为'e'因为nums[3]==1

'z'变为'ab'因为nums[25]==2

'z'变为'ab'因为nums[25]==2

第二次转换后的字符串为:"cdeabab"

字符串最终长度:字符串为"cdeabab",长度为7个字符。

示例2:

输入:s="azbk",t=1,nums=[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

输出:8

解释:

第一次转换(t=1)

'a'变为'bc'因为nums[0]==2

'z'变为'ab'因为nums[25]==2

'b'变为'cd'因为nums[1]==2

'k'变为'lm'因为nums[10]==2

第一次转换后的字符串为:"bcabcdlm"

字符串最终长度:字符串为"bcabcdlm",长度为8个字符。

提示:

1<=s.length<=105

s仅由小写英文字母组成。

1<=t<=109

nums.length==26

1<=nums[i]<=25

问题分析:

根据题目的描述,对于字符串s的处理,不管是处理几遍,最终都要涉及到对字符串s中的每一个字符进行处理,因而我们对问题的处理分为三个层次:

  1. 对单个字符的处理。对单个字符的处理,要结合nums中的要求来进行,所以为此编制处理函数turner(c,nums),其功能是对于一个字符c,按照nums中的要求将其转换为一个字符串。比如:字符'z'按nums[25]==1的要求,则转变为'a',若按nums[25]==2的规则,则转变为'ab'。
  2. 对一个字符串s进行处理。既然能够对单个字符c按nums中的规则进行转换,那就可以对字符串s中的每一个字符进行这种转换,进而实现对一个字符串的处理。函数turnall(s)可以实现这个功能,nums给定规则,返回一个按规则处理过后的新字符串。
  3. 循环处理解决遍数,问题就解决了。

程序如下:

#单个字符c按nums中的规则处理,转换为一个新的字符或字符串,并返回
def turner(c,nums):
    idx=ord(c)-97
    cc=nums[idx]
    a=[]
    for i in range(cc):
        a.append(chr((ord(c)-96)%26+97+i))
    return ''.join(a)

#对一个字符串s按nums中的要求进行转换,并返回转换后的结果
def turnall(s):
    a=[]
    for i in s:
        a.append(turner(i,nums))
    return ''.join(a)

#输入s、t和nums
s=input('pls input s=')
t=int(input('pls input t='))
nums=eval(input('pls input nums='))

#利用循环对s进行t遍处理,输出处理之后的字符串和字符串长度
for i in range(t):
    s=turnall(s)
print(s)
print(len(s))

运行实例一

pls input s=abccz

pls input t=2

pls input nums=[1,2,3,1,1,1,1,1,2,1,2,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2]

cddefeefgefgbcd

15

运行实例二

pls input s=azbk

pls input t=1

pls input nums=[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

bcabcdlm

8

感悟:

抓住解决问题的关键,问题就会迎刃而解。关键是如何使自己具备这种抓关键的能力。

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

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

相关文章

WindowsDocker安装到D盘,C盘太占用空间了。

Windows安装 Docker Desktop的时候,默认位置是安装在C盘,使用Docker下载的镜像文件也是保存在C盘,如果对Docker使用评率比较高的小伙伴,可能C盘空间,会被耗尽,有没有一种办法可以将Docker安装到其它磁盘,同时Docker的数据文件也保存在其他磁盘呢? 答案是有的,我们可以…

vue常见题型(1-10)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 2.2双向绑定的原理是什么vue框架采用的是数据双向绑定的方式&#xff0c;由三个重要部分构成2.2.1.ViewModel2.2.2 双向绑定2.2.3.1.编译Compile2.2.3.2.依赖收集 3…

python怎么将字符串转换为数字

python如何将列表中的字符串转为数字&#xff1f;具体方法如下&#xff1a; 有一个数字字符的列表&#xff1a; numbers [1, 5, 10, 8] 想要把每个元素转换为数字&#xff1a; numbers [1, 5, 10, 8] 用一个循环来解决&#xff1a; new_numbers []; for n in numbers:new_n…

大数据新视界 -- 大数据大厂之 Impala 性能优化:解锁大数据分析的速度密码(上)(1/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Flutter 插件 sliding_up_panel 实现从底部滑出的面板

前言 sliding_up_panel 是一个 Flutter 插件&#xff0c;用于实现从底部滑出的面板。它在设计上非常灵活&#xff0c;能够适应多种 UI 场景&#xff0c;比如从底部滑出的菜单、可拖动的弹出面板等。以下是 sliding_up_panel 的详细用法&#xff0c;包括常用的参数说明和示例代…

大客户营销数字销售实战讲师培训讲师唐兴通专家人工智能大模型销售客户开发AI大数据挑战式销售顾问式销售专业销售向高层销售业绩增长创新

唐兴通 销售增长策略专家、数字销售实战导师 专注帮助企业构建面向AI数字时代新销售体系&#xff0c;擅长运用数字化工具重塑销售流程&#xff0c;提升销售业绩。作为《挑战式销售》译者&#xff0c;将全球顶尖销售理论大师马修狄克逊等理论导入中国销售业界。 核心专长&…

es数据同步(仅供自己参考)

数据同步的问题分析&#xff1a; 当MySQL进行增删改查的时候&#xff0c;数据库的数据有所改变&#xff0c;这个时候需要修改es中的索引库的值&#xff0c;这个时候就涉及到了数据同步的问题 解决方法&#xff1a; 1、同步方法&#xff1a; 当服务对MySQL进行增删改的时候&…

入门车载以太网(3) -- 网络层

目录 1. 网络通信示例 2. IP地址类别 3. IP数据报 4. 小结 今天继续车载以太网&#xff0c;聊聊网络层。 1. 网络通信示例 我们首先回顾车载以太网的数据传输模型。 从7层开始(车载以太网模糊了5-7层&#xff0c;统称应用层)&#xff0c;每个中间层都为上层提供功能&…

六个核桃斥资千万研究脑健康,核桃健脑作用科学具象化了

健康&#xff0c;是这两年热度居高不下的社会话题。对健康的追求影响了诸多领域的发展&#xff0c;上至尖端科研&#xff0c;下至日常接触的食品饮料&#xff0c;都已被卷入大势。 其中&#xff0c;“脑健康”这个听起来更前沿的话题&#xff0c;又已经成为格外重要的一个领域…

基于Multisim光控夜灯LED电路(含仿真和报告)

【全套资料.zip】光控夜灯LED电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.采用纯数字电路&#xff0c;非单片机。 2.通过检测周围光线&#xff0c;光线暗且有声音时自动开灯…

【go从零单排】go中的基本数据类型和变量

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 基本类型 go中的string、int、folat都可以用连接boolen可以用逻辑表达式计算 package mainimport "fmt&quo…

前端学习笔记—Vue3特性

一、 Vue3与Vite构建工具简介 image.png image.png image.png image.png Vite构建工具&#xff08;其他的打包工具有webpack&#xff0c;grunt&#xff0c;gulp&#xff09; image.png image.png 构建 二、创建Vue3项目 vite在TypeScript结合使用上&#xff0c;直接开箱即用&am…

DICOM标准:DICOM图像核心属性概念详解——关于参考帧、病人位置、病人方位、图像位置和图像方向、切片位置、图像像素等重要概念解析

目录 1、参考帧模块属性 2、模态(Modality): 3、病人位置(Patient Position): 4、 病人方位(Patient Orientation): 5、 图像位置和图像方向: 6、切片位置 7、图像像素模块 7.1 图像像素属性描述 7.1.1 每个像素的样本 7.1.2 光度解释 7.1.3 平面结构 7.1.…

短视频矩阵系统的源码, OEM贴牌源码

针对矩阵短视频系统的源码功能设计&#xff0c;我们开发设计了以下核心模块&#xff1a; 1. 短视频一键发布功能&#xff1a;允许用户快速、便捷地发布短视频内容 2. 批量图文剪辑&#xff1a;支持同时编辑和处理多张图片与文本的组合&#xff0c;提高编辑效率 3. 批量剪辑短…

6款IntelliJ IDEA插件,让Spring和Java开发如虎添翼

文章目录 1、SonarLint2、JRebel for IntelliJ3、SwaggerHub插件4、Lombok插件5、RestfulTool插件6、 Json2Pojo插件7、结论 对于任何Spring Boot开发者来说&#xff0c;两个首要的目标是最大限度地提高工作效率和确保高质量代码。IntelliJ IDEA 是目前最广泛使用的集成开发环境…

新能源汽车与公共充电桩布局

近年来,全球范围内对新能源汽车产业的推动力度不断增强,中国新能源汽车市场也呈现蓬勃发展的势头,在政策与市场的共同推动下,新能源汽车销量持续增长。然而,据中国充电联盟数据显示,充电基础设施建设滞后于新能源汽车数量增长的现状导致充电桩供需不平衡,公共充电桩服务空白区域…

健身房管理智能化:SpringBoot技术指南

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了健身房管理系统的开发全过程。通过分析健身房管理系统管理的不足&#xff0c;创建了一个计算机管理健身房管理系统的方案。文章介绍了健身房管理系统的系统分析部…

Abaqus随机骨料过渡区孔隙三维网格插件:Random Agg ITZ Pore 3D (Mesh)

插件介绍 Random Agg ITZ Pore 3D (Mesh) V1.0 - AbyssFish 插件可在Abaqus内参数化建立包含水泥浆基体、粗细骨料、界面过渡区&#xff08;ITZ&#xff09;、孔隙在内的多相材料混凝土细观背景网格模型。 模型说明 插件采用材料映射单元的方式&#xff0c;将不同相材料赋值…

lora训练模型 打造个人IP

准备工作 下载秋叶炼丹器整理自己的照片下载底膜 https://rentry.org/lycoris-experiments 实操步骤 解压整合包 lora-scripts,先点击“更新” 训练图片收集 比如要训练一个自己头像的模型&#xff0c;就可以拍一些自己的照片&#xff08;20-50张&#xff0c;最少15张&…

sheng的学习笔记-tidb框架原理

目录 TiDB整体架构 TiDB架构图 组件-TiDB Server 架构图 流程 关系型数据转成kv ​编辑 组件-TiKV Server​ 架构图 主要功能&#xff1a; 列簇 组件-列存储TiFlash 组件-分布式协调层&#xff1a;PD PD架构图 路由 Region Cache back off TSO分配 概念 解…