力扣-1844.将所有数字用字符替换

embedded/2024/9/25 2:30:57/

思路:

1. `class Solution:`:定义了一个名为 `Solution` 的类,用于包装解决问题的方法。

2. `def replaceDigits(self, s: str) -> str:`:定义了一个名为 `replaceDigits` 的方法,该方法接受一个字符串 `s` 作为参数,并返回一个字符串。`self` 是一个特殊的参数,表示类的实例本身。

3. `n = len(s)`:获取字符串 `s` 的长度,并将其赋值给变量 `n`。

4. `arr = list(s)`:将字符串 `s` 转换为字符列表,并将其赋值给变量 `arr`。这样做是为了便于对字符串中的字符进行修改。

5. `for i in range(1, n, 2):`:使用 `for` 循环遍历字符串 `s` 中的每个奇数索引位置(从索引1开始,步长为2)。

6. `arr[i] = chr(ord(arr[i - 1]) + int(arr[i]))`:这行代码是关键。它将当前奇数索引位置的字符替换为其前一个字符的 ASCII 码加上当前位置的数字。具体来说,`ord(arr[i - 1])` 返回前一个字符的 ASCII 码,`int(arr[i])` 将当前位置的字符转换为整数,然后二者相加,并用 `chr()` 方法将结果转换为对应的字符。

7. `return "".join(arr)`:将修改后的字符列表 `arr` 转换回字符串,并作为方法的返回值。

综上所述,这段代码的作用是将字符串中的奇数索引位置的字符替换为其前一个字符的 ASCII 码加上当前位置的数字。

题解:

python">class Solution:def replaceDigits(self, s: str) -> str:n = len(s)  # 获取字符串长度arr = list(s)  # 将字符串转换为字符列表,便于修改for i in range(1, n, 2):  # 遍历字符串的奇数索引位置(从1开始)# 将当前位置的字符替换为其前一个字符的ASCII码加上当前位置的数字(字符移位)arr[i] = chr(ord(arr[i - 1]) + int(arr[i]))return "".join(arr)  # 将字符列表转换为字符串并返回

优化:

由于 Python 中的字符串是不可变的,我们可以使用列表来构建新的字符串,而不是每次替换字符时都创建一个新字符串。

python">class Solution:def replaceDigits(self, s: str) -> str:chars = list(s)  # 将字符串转换为字符列表for i in range(1, len(chars), 2):  # 遍历奇数索引位置prev_char = chars[i - 1]  # 前一个字符offset = int(chars[i])  # 当前位置的数字new_char = chr(ord(prev_char) + offset)  # 计算新字符chars[i] = new_char  # 替换当前位置的字符return "".join(chars)  # 将字符列表转换回字符串并返回


http://www.ppmy.cn/embedded/12942.html

相关文章

Maven基础篇2

1.依赖范围 只要是jar默认情况下可以在任何地方使用,可以通过scope标签进行设定其范围 scope的不同参数以及指定范围 关于servlet-api不参与打包,原因服务器上tomcat也有servlet-api如果版本不同会起冲突;因此需要使用scope写provided来进…

线上线下交友社区系统 可打包小程序 支持二开 源码交付!

社交网络的普及,人们交友的方式发生了巨大的变化。过去,我们主要通过线下的方式来结识新朋友,比如在学校、工作场所、社交活动或者兴趣小组中。然而,随着移动端软件的发展,线上交友也逐渐变得流行。 方便性&#xff1a…

QT客户端的开发框架

针对QT客户端开发,目前存在多种框架,各有优缺点,具体选择哪种框架取决于您的具体需求和项目特点。以下是一些流行的QT客户端开发框架。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. Qt框架 Qt…

ELK日志系统的搭建

文章目录 简介软件准备安装JDK下载Elasticsearch软件修改配置信息创建ElasticSearch运行用户、启动服务添加防火墙策略ElasticSearch-Head插件安装 安装Kibana下载软件包修改配置启动服务 安装Logstash安装包下载安装服务配置修改配置pipeline流水线服务配置文件 启动服务 全流…

算法第42天动态规划4

416 分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等 def canPartition(nums:List[int])->bool:total_sumsum(nums)if total_sum%2!0:return Falsetarget_sumtotal_sum//2dp[[Fal…

Python蜘蛛侠

目录 写在前面 蜘蛛侠 编写代码 代码分析 更多精彩 写在后面 写在前面 本期小编给大家推荐一个酷酷的Python蜘蛛侠,一起来看看叭~ 蜘蛛侠 蜘蛛侠(Spider-Man)是美国漫威漫画宇宙中的一位标志性人物,由传奇创作者斯坦李与艺…

Android 蓝牙无法发送或接收某些类型文件

Android 蓝牙应用使得用户能够在蓝牙设备之间进行文件传输。用户可以通过蓝牙连接两台设备,并在它们之间传输文件,如照片、音乐、视频等。这对于用户来说是非常便利的,无需使用数据线或互联网连接,可以直接在附近的设备之间进行文…

filebeat 设置elasticsearch索引的 max_result_window

在 Filebeat 中设置索引的 max_result_window 需要修改 Elasticsearch 的索引模板。max_result_window 参数定义了在 Elasticsearch 中执行搜索时,最大返回文档的数量。默认情况下,该值为 10000。 答案来着gpt demo:http://124.220.104.235/ …