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

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)-97cc=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.xdnf.cn/news/6497.html

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

相关文章

Linux 下执行定时任务之 Systemd Timers

不知道 ECS 因为什么缘故&#xff0c;上面安装的 MySQL 服务老是不定期挂掉&#xff0c;本来想通过 Linux 得 Cron 配置个半小时的定时检测任务&#xff0c;结果一直没有执行&#xff0c;因此又尝试使用了 Systemd Timers 进行了重新配置&#xff0c;简要做个记录。 Systemd Ti…

计算机网络:网络层 —— IP 多播技术

文章目录 基本概念IP多播地址和多播组 IP多播的类型硬件多播将IPv4多播地址映射为多播MAC地址 基本概念 多播&#xff08;Multicast&#xff0c;也称为组播&#xff09;是一种实现“一对多”通信的技术&#xff0c;允许一台或多台主机&#xff08;多播源&#xff09;发送单一数…

OuteTTS:基于纯语言建模的开源文本到语音合成项目,支持语音克隆等多种语音合成任务

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…

C语言 | Leetcode C语言题解之第540题有序数组中的单一元素

题目&#xff1a; 题解&#xff1a; int singleNonDuplicate(int* nums, int numsSize) {int low 0, high numsSize - 1;while (low < high) {int mid (high - low) / 2 low;mid - mid & 1;if (nums[mid] nums[mid 1]) {low mid 2;} else {high mid;}}return …

【学习笔记】SAP ABAP——数据类型

SAP ABAP——数据类型 SAP模块介绍数据类型内涵数据类型分类预定义数据类型数据字典数据类型用户自定义数据类型 SAP模块介绍 模块模块名称FI财务会计CO管理会计SD销售分销MM物料管理PM工厂维护HR人力资源PS项目管理BW数据仓库BC系统相关PP生产制造 数据类型内涵 ​ 数据类型…

国产服务器平台离线部署k8s和kubesphere(含离线部署新方式)

"信创&#xff1a;鲲鹏麒麟&#xff0c;ARM64架构&#xff0c;实现K8s和Kubesphere的离线部署&#xff0c;全新方式助力企业高效运维。" 本文将深入探讨如何借助鲲鹏CPU(arm64)和操作系统Kylin V10 SP2/SP3,通过KubeKey制作KubeSphere与Kubernetes的离线安装包&#…

SpringBoot在线教育系统:技术与实践

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

初始JavaEE篇——多线程(7):定时器、CAS

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 定时器的使用 定时器的原理 模拟实现定时器 CAS 介绍 CAS的应用场景 解析 AtomicInteger 类 实现自旋锁 CAS的缺陷…

【金融风控】相关业务介绍及代码详解

金融风控相关业务介绍 【了解】项目整体介绍 1.风控业务和风控报表</span> 零售金融产品 相关的指标 风控建模流程 ​ #2.特征工程 特征构造 特征筛选 ​ 3.评分卡模型构建 逻辑回归 集成学习 XGBoost LightGBM 模型评估 ​ #4.样本不均衡问题/异常点检测 【了解】今日…

Spring Bean的作用域和生命周期

在 Spring 框架中&#xff0c;Bean 是用于管理对象的核心组成部分。Spring 的 IoC 容器通过 Bean 的作用域来控制它们的生命周期。理解 Spring Bean 的作用域和生命周期对于开发灵活、高效的 Spring 应用至关重要。 Spring Bean 的五种作用域 Spring 提供了五种 Bean 作用域&a…

Linux 配置JDK

文章目录 一、下载Oracle-JDK1.1、如何正确的下载JDK二、配置JDK环境变量2.1 环境变量配置2.1.1、修改vim /etc/profile 添加jdk的路径一、下载Oracle-JDK 1.1、如何正确的下载JDK 首先我要安装的是oracle-jdk,这个时候什么地方都不要去,就去oracle的官网,然后找到,jdk的下…

adb 常用命令汇总

目录 adb 常用命令 1、显示已连接的设备列表 2、进入设备 3、安装 APK 文件到设备 4、卸载指定包名的应用 5、从设备中复制文件到本地 6、将本地文件复制到设备 7、查看设备日志信息 8、重启设备 9、截取设备屏幕截图 10、屏幕分辨率 11、屏幕密度 12、显示设备的…

人工智能技术:未来生活的“魔法师”

想象一下&#xff0c;未来的某一天&#xff0c;你醒来时&#xff0c;智能助手已经为你准备好了早餐&#xff0c;你的智能家居系统根据你的心情和日程安排调整了室内的光线和音乐&#xff0c;而你的自动驾驶汽车已经在门口等你。这不是科幻小说&#xff0c;这是人工智能技术为我…

JavaWeb

一,JavaWeb JavaWeb就是用Java技术来解决相关web互联网领域的技术。 软件架构模式&#xff1a; 1.BS模式&#xff1a;browser server 浏览器服务器 优点&#xff1a;只需要开发服务器代码&#xff0c;用户下载浏览器&#xff0c;维护方便&#xff1b;减少用户的磁盘空间 缺…

【C++笔记】模版的特化及其编译分离

【C笔记】模版的特化及其编译分离 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】模版的特化及其编译分离前言一.模版1.1非类型模板参数 二.模板的特化2.1特化的定义2.2 函数模板特化2.3底层const2.4 类模板特化 三…

解决:无法在此设备上激活Windows因为无法连接到你的组织的激活服务器

问题&#xff1a; 桌面右下角会出现这个东西&#x1f447; 在设置里查看激活状态就会看到&#x1f447; 解决方法 &#xff1a; 1.打开CMD 搜索CMD&#xff0c;然后以管理员身份运行 2.设置 KMS服务器 1&#xff09;命令行输入&#xff1a; slmgr /skms kms.03k.org 然后…

1.6K+ Star!GenAIScript:一个可自动化的GenAI脚本环境

GenAIScript 简介 GenAIScript[1] 是一个 JavaScript-ish 环境&#xff0c;提供了便捷的工具用于文件摄入、提示开发和结构化数据提取。它允许用户以编程方式组装大型语言模型&#xff08;LLM&#xff09;的提示&#xff0c;并通过单一脚本协调 LLM、工具和数据。 项目特点 主…

高效管理iPhone存储:苹果手机怎么删除相似照片

在使用iPhone的过程中&#xff0c;我们经常会遇到存储空间不足的问题&#xff0c;尤其是当相册中充满了大量相似照片时。这些照片不仅占用了宝贵的存储空间&#xff0c;还可能使iPhone出现运行卡顿的情况。因此&#xff0c;我们迫切需要寻找苹果手机怎么删除相似照片的方法&…

TARE-PLANNER学习记录

参考&#xff1a; CMU-TARE 探索算法官方社区问答汇总_cmu localplanner 部署-CSDN博客 Tare_planner学习笔记_tare planner-CSDN博客 Tare_planner 学习教程(二)_tareplanner-CSDN博客 &#xff08;学习笔记&#xff09;机器人自主导航从零开始第七步——TARE Planner自主…

Moonshine - 新型开源ASR(语音识别)模型,体积小,速度快,比OpenAI Whisper快五倍 本地一键整合包下载

Moonshine 是由 Useful Sensors 公司推出的一系列「语音到文本&#xff08;speech-to-text, STT&#xff09;转换模型」&#xff0c;旨在为资源受限设备提供快速而准确的「自动语音识别&#xff08;ASR&#xff09;服务」。Moonshine 的设计特别适合于需要即时响应的应用场景&a…