【废物研究生刷算法】字符串

news2025/2/23 17:42:35

文章目录

  • 1. 反转字符串
  • 2. 替换数字
  • 3. 反转字符串中的单词
  • 4. 右旋字符串
  • 总结
    • 1、字符串处理函数
    • 2、字符串切片

如果使用python处理字符串,有很多py内置的函数可以使用,主要还是记住这些处理方法。

1. 反转字符串

在这里插入图片描述

class Solution:
    def reverseStr(self, s, k):
        s = list(s)  # 将字符串转为列表,因为字符串是不可变的
        for i in range(0, len(s), k * 2):  # 步长为 2k,从 0 开始循环
            s[i: i + k] = s[i: i + k][::-1]  # 反转从 i 到 i+k 的子段
        return ''.join(s)  # 将列表转回字符串
  1. 为什么将字符串转为列表?
    Python 的字符串是不可变类型(immutable),无法直接修改其中的字符。而列表是可变的,可以通过切片赋值来修改。因此,第一步 s = list(s) 将字符串转为字符列表,便于后续操作。
  2. 为什么用 range(0, len(s), k * 2)
  • range(0, len(s), k * 2) 表示从 0 开始,以 2k 为步长递增,直到到达或超过字符串长度。
  • 步长 2k 是因为题目要求每隔 2k 个字符处理一次:
  • 前 k 个字符反转,后 k 个字符保持不变,总共处理 2k 个字符。
  1. 为什么 s[i: i + k] = s[i: i + k][::-1] 能正确反转?
    s[i: i + k] 是从索引 i 到 i + k 的子列表(不包含 i + k)。
    [::-1] 是 Python 的切片语法,表示反转整个列表。
    赋值操作 s[i: i + k] = ... 将反转后的结果放回原位置。
    关键点:当 i + k 超出字符串长度时,Python 的切片会自动截断到字符串末尾,不会报错。

例如:
如果 s = [‘a’, ‘b’, ‘c’], i = 2, k = 2:
s[2:4] 实际只取到 s[2:] = [‘c’],反转后还是 [‘c’],赋值回去不会越界。

2. 替换数字

在这里插入图片描述

s = list(input())
i = 0
while i < len(s):
    if '0' <= s[i] <= '9':  # 判断是否为数字
        s[i:i+1] = list('number')  # 替换为 'number' 的字符列表
        i += len('number')  # 跳过 'number' 的长度
    else:
        i += 1
print("".join(s))
  • 用 ‘0’ <= s[i] <= ‘9’ 判断字符是否为数字(比 ord 更直观)。
  • s[i:i+1] = list(‘number’) 将单个字符替换为 “number” 的字符列表。
  • 每次替换后,i 跳过 “number” 的长度(6),避免重复检查。
s = input()
result = ''
for char in s:
    if char.isdigit():  # 判断是否为数字
        result += 'number'
    else:
        result += char
print(result)
  • char.isdigit() 是 Python 内置方法,直接判断字符是否为数字。
  • 逐字符构建结果字符串,数字替换为 “number”,非数字保持不变。

3. 反转字符串中的单词

在这里插入图片描述

class Solution(object):
    def reverseWords(self, s):
        """
        :type s: str
        :rtype: str
        """
        s = s.strip()
        strs = s.split()
        strs.reverse()
        return " ".join(strs)

4. 右旋字符串

在这里插入图片描述

n = int(input())
s = input()

print(s[-n:]+s[:-n])

总结

1、字符串处理函数

str.find(str1)
str.count(str1)
str.replace(str1,count)
str.split('分界符')
str.capitalize()
str.strip()
str.join()
str.isdigit()
str.isalpha()
str.reverse()

2、字符串切片

切片操作的基本语法是 sequence[start:stop:step],其中:
start:切片开始的位置(包含该位置的元素),默认为 None,如果为负数则从序列末尾开始计数。
stop:切片结束的位置(不包含该位置的元素),默认为 None,如果为负数则从序列末尾开始计数。
step:切片的步长,默认为 1,可以为负数,表示从右向左切片。

倒数有关的切片

# 定义一个列表
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 示例 1:获取最后一个元素
last_element = my_list[-1]
print("最后一个元素:", last_element)

# 示例 2:获取倒数三个元素
last_three = my_list[-3:]
print("倒数三个元素:", last_three)

# 示例 3:获取从倒数第五个元素到倒数第二个元素
sub_list = my_list[-5:-1]
print("从倒数第五个元素到倒数第二个元素:", sub_list)

# 示例 4:使用负步长反转列表
reversed_list = my_list[::-1]
print("反转后的列表:", reversed_list)

# 示例 5:每隔一个元素取一个,从倒数第二个元素开始到第一个元素
new_list = my_list[-2::-2]
print("每隔一个元素取一个,从倒数第二个元素开始到第一个元素:", new_list)

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

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

相关文章

idea-代码补全快捷键

文章目录 前言idea-代码补全快捷键1. 基本补全2. 类型匹配补全3. 后缀补全4. 代码补全 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;…

我们来学人工智能 -- DeepSeek客户端

DeepSeek客户端 题记使用后记系列文章 题记 我选择了 Cherry Studio是国内产品由CherryHQ团队开源是一个平台在这里&#xff0c;有豆包、kimi、通义千问的入口当然&#xff0c;最主要是作为大模型的UI正如标题&#xff0c;这里&#xff0c;作为DeepSeep的客户端 使用 下载本…

洛谷 P1102 A-B 数对(详解)c++

题目链接&#xff1a;P1102 A-B 数对 - 洛谷 1.题目分析 2.算法原理 解法一&#xff1a;暴力 - 两层for循环 因为这道题需要你在数组中找出来两个数&#xff0c;让这两个数的差等于定值C就可以了&#xff0c;一层for循环枚举A第二层for循环枚举B&#xff0c;求一下看是否等于…

计算机视觉:主流数据集整理

第一章&#xff1a;计算机视觉中图像的基础认知 第二章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(一) 第三章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(二) 第四章&#xff1a;搭建一个经典的LeNet5神经网络(附代码) 第五章&#xff1…

2025软件测试面试常问的题(详细解析)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 测试技术面试题 1、什么是兼容性测试&#xff1f;兼容性测试侧重哪些方面&#xff1f; 参考答案&#xff1a; 兼容测试主要是检查软件在不同的硬件平台、软件平…

项目POC的作用是什么

在项目管理和开发中&#xff0c;POC&#xff08;Proof of Concept&#xff0c;概念验证&#xff09;作为一个关键的步骤&#xff0c;扮演着非常重要的角色。POC的作用主要是验证某个概念、技术或方案的可行性&#xff0c;通过小规模实验或原型验证项目的关键假设&#xff0c;帮…

集合 数据结构 泛型

文章目录 1.Collection集合1.1数组和集合的区别【理解】1.2集合类体系结构【理解】1.3Collection 集合概述和使用【应用】内部类匿名内部类Lambda表达式 1.4Collection集合的遍历【应用】1.5增强for循环【应用】 2.List集合2.1List集合的概述和特点【记忆】2.2List集合的特有方…

vue-treeselect显示unknown的问题及解决

问题 解决办法 去node-modules包里面找到这个组件的源码&#xff0c;在它dist文件里面找到这个文件&#xff0c;然后搜索unknown&#xff0c;把它删掉就可以解决了。

代码随想录-训练营-day35

309. 买卖股票的最佳时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; 这个题比起我们的买卖股票二来说多了一个冷冻期的说法&#xff0c;也就是我们卖出股票的第二天无法买入股票。 这样对我们而言&#xff0c;dp数组的含义&#xff0c;或者说dp数组中的状态显然就不能是…

【Blender】二、建模篇--06,曲线建模/父子级和蒙皮修改器

00:00:03,620 --> 00:00:09,500 前几节可能我们已经做了很多种类型的模型了 但是有一种类型 我们一直避开就是这种管道 1 00:00:10,050 --> 00:00:19,370 藤条头发啊 衣服架子啊这种弯弯绕绕的 需要一定柔软度的模型 那么这节课呢我们都来集中看一下曲线的模型 我们应该…

【服务器与本地互传文件】远端服务器的Linux系统 和 本地Windows系统 互传文件

rz 命令&#xff1a;本地上传到远端 rz 命令&#xff1a;用于从本地主机上传文件到远程服务器 rz 是一个用于在 Linux 系统中通过 串口 或 SSH 上传文件的命令&#xff0c;它实际上是 lrzsz 工具包中的一个命令。rz 命令可以调用一个图形化的上传窗口&#xff0c;方便用户从本…

被裁20240927 --- WSL-Ubuntu20.04安装cuda、cuDNN、tensorRT

cuda、cuDNN、tensorRT的使用场景 1. CUDA&#xff08;Compute Unified Device Architecture&#xff09; 作用&#xff1a; GPU 通用计算&#xff1a;CUDA 是 NVIDIA 的并行计算平台和编程模型&#xff0c;允许开发者直接利用 GPU 的并行计算能力&#xff0c;加速通用计算任…

【架构】微内核架构(Microkernel Architecture)

微内核架构(Microkernel Architecture) 核心思想 微内核架构(又称插件式架构)通过最小化核心系统,将可扩展功能以插件模块形式动态加载,实现高内聚低耦合。其核心设计原则: 核心最小化:仅封装基础通用能力(如插件管理、通信机制、安全校验)功能插件化:所有业务功能…

动静态链接与加载

目录 静态链接 ELF加载与进程地址空间&#xff08;静态链接&#xff09; 动态链接与动态库加载 GOT表 静态链接 对于多个.o文件在没有链接之前互相是不知到对方存在的&#xff0c;也就是说这个.o文件中调用函数的的跳转地址都会被设定为0&#xff08;当然这个函数是在其他.…

83_CentOS7通过yum无法安装软件问题解决方案

大家好,我是袁庭新。很多小伙伴在CentOS 7中使用yum命令安装软件时,出现无法安装成功的问题,今天给大家分享一套解决方案~ 在CentOS 7中,yum是一个常用的包管理工具,它基于RPM包管理系统。如果你发现yum无法使用,可能是由于多种原因造成的。以下是一些解决步骤,可以帮…

数据包在客户端和服务端,以及网络设备间如何传输的?

声明&#xff1a;文章中图片来自于网络收集&#xff0c;整体流程自己梳理。 目录 问题&#xff1a;如下socket客户端请求数据包如何传输的&#xff1f; 拓扑环境 数据包在分层间传输 网络分层L2/L3/L4 数据包收发-在各分层间变化 各层头部中-核心信息 数据包在不同设备…

用Python实现Excel数据同步到飞书文档

目录 一、整体目标 二、代码结构拆解 三、核心逻辑讲解&#xff08;重点&#xff09; 1. 建立安全连接&#xff08;获取access_token&#xff09; 2. 定位文档位置 3. 数据包装与投递 四、异常处理机制 五、函数讲解 get_access_token() 关键概念解释 1. 飞书API访问…

25林业研究生复试面试问题汇总 林业专业知识问题很全! 林业复试全流程攻略 林业考研复试真题汇总

25 林业考研复试&#xff0c;专业面试咋准备&#xff1f;学姐来支招&#xff01; 宝子们&#xff0c;一提到林业考研复试面试&#xff0c;是不是就慌得不行&#xff0c;感觉老师会扔出一堆超难的问题&#xff1f;别怕别怕&#xff0c;其实林业考研复试就那么些套路&#xff0c;…

vxe-table实现动态列

vxe-table实现动态列 1.动态列解释2.解决步骤2.1将后端返回的动态列表头&#xff0c;按照格式拼接在固定列表头上2.2将后端返回的列表数据按照键值对格式组装 1.动态列解释 正常列表是有固定的列&#xff1b;我的需求是&#xff0c;最初只知道表格的固定两列&#xff0c;查询数…

尚硅谷爬虫note009

一、jsonpath 1.安装 pip install jsonpath 2.使用 只能解析本地文件 .json文件 {"store": {"book": [{"category": "reference","author": "Nigel Rees","title": "Sayings of the Century&qu…