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

news2024/11/15 23:23:25

思路:

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 码加上当前位置的数字。

题解:

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 中的字符串是不可变的,我们可以使用列表来构建新的字符串,而不是每次替换字符时都创建一个新字符串。

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.coloradmin.cn/o/1616879.html

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

相关文章

gitee / github 配置git, 实现免密码登录

文章目录 怎么配置公钥和私钥验证配置成功问题 怎么配置公钥和私钥 以下内容参考自 github ssh 配置,gitee的配置也是一样的; 粘贴以下文本,将示例中使用的电子邮件替换为 GitHub 电子邮件地址。 ssh-keygen -t ed25519 -C "your_emai…

Kotlin语法快速入门--条件控制和循环语句(2)

Kotlin语法入门–条件控制和循环语句(2) 文章目录 Kotlin语法入门--条件控制和循环语句(2)二、条件控制和循环语句1、if...else2、when2.1、常规用法2.2、特殊用法--并列:2.3、特殊用法--类型判断:2.4、特殊…

OLED透明屏的寿命如何?

OLED透明屏的寿命一般在20年左右,但如果是旧款,其寿命可能会缩短至15年左右。然而,这个数字并不是绝对的,因为不同用户的使用和保养方法会导致OLED透明屏的寿命出现延长或缩短。例如,长时间使用或在强光、高对比度高亮…

力扣刷题学习python(跟随视频学着刷)

使用入门 视频链接 【手把手带你刷Leetcode力扣|各个击破数据结构和算法|大厂面试必备技能【已完结】-哔哩哔哩】 https://b23.tv/vIcRT61 时空复杂度 时间: 空间:主要有O(1)和O(n)两种 数组 特点:适合读多写少 操作…

Leetcode 118 杨辉三角

目录 一、问题描述二、示例及约束三、代码方法一:数学 四、总结 一、问题描述 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。   在「杨辉三角」中,每个数是它左上方和右上方的数的和。 二、示例及约束 示例 1&#xff1a…

SQL的基础语句

1、select语句 select colums from table_name 2、条件语句 #查询出查询出用户id为1和3的用户记录 IN 操作符允许我们在 WHERE 子句中规定多个值。 select * from student where id in (1,3) #查询出所有姓王的同学 模糊查询 like 通配符(% 任意多个字符 _单个字符) #下例…

AR HUD_VSLAM+显示技术

智能座舱的一个重要技术方向是表达与展示。HUD可以将驾驶相关的信息,如车速、导航等投射到驾驶员的视线上方,避免驾驶员的目光离开前方道路。这种显示方式可以提供关键信息的实时展示,减少驾驶员的分心。 HUD的技术原理就是通过光学系统将信息…

突破文化壁垒:海外社交媒体营销的内容创新与个性化策略

随着全球化的加速和互联网的普及,海外社交媒体营销已成为企业拓展国际市场、提升品牌影响力的重要手段。然而,如何在众多品牌中脱颖而出,吸引海外用户的关注,却是一个值得深入探讨的问题。本文Nox聚星将和大家从内容创新和个性化策…

考研日常记录(upd 24.4.22)

由于实在太无聊了 , 所以记录以下考研备考日常 , 增加一点成就感 , 获得一点前进动力。 文章目录 2024.4.18 周四课程情况:时间规划: 2024.4.19 周五课程情况:时间规划: 2024.4.20 周六2024.4.2…

GaussianEditor:快速可控的3D编辑与高斯飞溅

GaussianEditor: Swift and Controllable 3D Editing with Gaussian Splatting GaussianEditor:快速可控的3D编辑与高斯飞溅 Yiwen Chen*​1,2   Zilong Chen*​3,5   Chi Zhang2   Feng Wang3   Xiaofeng Yang2 陈怡雯 *​1,2 陈子龙 *​3,5 张驰 2 王峰 3 杨晓…

k8s集群资源编排清单文件解读

1、YAML 文件概述 k8s集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到 YAML 格式文件中,我们把这种文件叫做资源清单文件,通过 kubectl 命令直接使用资源…

LTD271次升级 | 网站/小程序可设访问IP的黑白名单 • 官微中心支持PDF等办公文件预览与并分享 • 订单退款显示更详尽明细

1、新增IP访问限制功能; 2、订单新增交易号显示与退款明细显示; 3、自定义地址增加四级地区; 4、Android版App优化文件功能; 5、已知问题修复与优化; 01 官微中心 1) 新增IP限制访问功能 允许或者禁止某些 IP 或…

vue快速入门(四十)非父子组件通信

注释很详细&#xff0c;直接上代码 上一篇 新增内容 媒介js的创建发送组件发送事件示例接收组件接收事件示例 源码 App.vue <template><div id"app"><TessFirst></TessFirst><TestSecond></TestSecond></div> </templ…

Linux 引导过程与服务控制

Linux操作系统引导过程 完整启动过程 简化紧要关键步骤&#xff08;重点&#xff09; Linux系统开机引导过程&#xff1a; 1&#xff09;开机自检 检测硬件设备&#xff0c;找到能够引导系统的设备&#xff0c;比如硬盘 2&#xff09;MBR引导 运行MBR扇区里的主…

【STM32+HAL+Proteus】系列学习教程---RS485总线(收发仿真实现)

实现目标 1、掌握UART/USART/RS485等几个常见概念的区别 2、掌握RS485的逻辑电平、硬件接线等基础知识 3、具体实现目标&#xff1a;1、利用两个单片机组成RS485通信网络&#xff1b;2、两个单片机之间能实现正常收发数据。 一、串口、RS485等之间的关系 串口&#xff1a;是…

使用 Docker 部署 Draw.io 在线流程图系统

1&#xff09;介绍 Draw.io GitHub&#xff1a;https://github.com/jgraph/drawio Draw.io 是一款开源的绘制流程图的工具&#xff0c;拥有大量免费素材和模板。程序本身支持中文在内的多国语言&#xff0c;创建的文档可以导出到多种网盘或本地。无论是创建流程图、组织结构图…

vscode 解决无法创建临时文件。

报错&#xff1a; Fatal error: cant create C:\Users???y\AppData\Local\Temp\ccqkCS9j.o: No such file or directory 右击此 电脑 -> 属性 打开 系统信息 -> 高级系统设置 系统属性 -> 高级 -> 环境变量 将temp 和 tmp 改为其它英文路径 只更改用户变量…

Opencv_2_ 图像色彩空间转换

ColorInvert.h 内容如下&#xff1a; #pragma once #include <opencv.hpp> using namespace std; #include <opencv.hpp> using namespace cv; using namespace std; class ColorInvert{ public : void colorSpaceInvert(Mat&image); }; ColorInvert.cpp…

kubernetes中的副本控制器rc(replicationcontrollers)和rs(replicasets)

一、rc控制器replicationcontrollers rc控制器就是控制相同pod副本数量 使用rc控制器资源创建pod&#xff0c;设定创建pod资源的数量 1.1 案例 1.1.1、创建资源清单 [rootmaster rc-demo]# cat rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: rc01 …

Spring Cloud面试篇

面试篇-nacos面试题 1. springboot常见组件 注册中心组件&#xff1a;Eureka、Nacos 负载均衡组件&#xff1a;Ribbon 远程调用组件&#xff1a;OpenFeign 网关组件&#xff1a;Zuul、Gateway 服务保护组件&#xff1a;Hystrix、Sentinel 服务配置管理组件&#xff1a;SpringCl…