当前位置: 首页 > news >正文

代码随想录算法训练营第七天 | 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字

学习内容:

344.反转字符串
双指针

classSolution:defreverseString(self,s:List[str])->None:""" Do not return anything, modify s in-place instead. """left=0right=len(s)-1whileleft<right:s[left],s[right]=s[right],s[left]left+=1right-=1returns

学习心得:直接用双指针从两端交换元素,往中间靠。

  1. 反转字符串II
    给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符,再重新计数。

如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

classSolution:defreverseStr(self,s:str,k:int)->str:defreversesubstring(text):left,right=0,len(text)-1whileleft<right:text[left],text[right]=text[right],text[left]left+=1right-=1returntext res=list(s)foriinrange(0,len(s),2*k):res[i:i+k]=reversesubstring(res[i:i+k])return"".join(res)

学习心得:先定义一个反转函数实现很简单用双指针,list()将字符串 s 转换为字符列表。之后for循环 i in range(0, len(s), 2 * k): res[i : i + k] = reverse(res[i : i + k])。这里注意一个特性 res[i : i + k] 当i+k超出字符串长度,将会返回最后的几个字符。
‘’.join(res) 是 Python 中将字符列表拼接成字符串的常用方法。

卡码网:54.替换数字
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。

例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。

对于输入字符串 “a5b”,函数应该将其转换为 “anumberb”

输入:一个字符串 s,s 仅包含小写字母和数字字符。

输出:打印一个新的字符串,其中每个数字字符都被替换为了number

样例输入:a1b2c3

样例输出:anumberbnumbercnumber

数据范围:1 <= s.length < 10000。

s=input()result=[]forchins:ifch.isdigit():result.append("number")else:result.append(ch)result="".join(result)print(result)

双指针

classSolution(object):defsubsitute_numbers(self,s):""" :type s: str :rtype: str """count=sum(1forcharinsifchar.isdigit())# 统计数字的个数expand_len=len(s)+(count*5)# 计算扩充后字符串的大小, x->number, 每有一个数字就要增加五个长度res=['']*expand_len new_index=expand_len-1# 指向扩充后字符串末尾old_index=len(s)-1# 指向原字符串末尾whileold_index>=0:# 从后往前, 遇到数字替换成“number”ifs[old_index].isdigit():res[new_index-5:new_index+1]="number"new_index-=6else:res[new_index]=s[old_index]new_index-=1old_index-=1return"".join(res)if__name__=="__main__":solution=Solution()whileTrue:try:s=input()result=solution.subsitute_numbers(s)print(result)exceptEOFError:break

学习心得:直接循环判断替换,或者双指针。
双指针:首先计算字符串里数字的个数,isdigit()之后计算nums = len(s) + geshu * 5 得到我们需要的空字符串的总长度 res = [" "] x nums
new_index = nums - 1 old_index = len(s) - 1
进入while循环为res填字符。判断条件old_index >= 0
如果
if s[old_index].isdigit: res[new_index - 5 : new_index + 1] = “number” new_index -= 6 else: res[new_index] = s[old_index] new_index -= 1
old_index -= 1 最后return “”.join(res)
当文件直接运行时,name的值是 “main

http://www.jsqmd.com/news/1300520/

相关文章:

  • 字母编码记忆法:用图像与故事攻克英语单词拼写难题
  • Python字典get()方法详解:告别KeyError,实现安全取值
  • 从避坑要点到实操步骤:结婚证公证线上办理全能指南
  • 测评数据本地加密留存不上传云端|MBTI 安全自测榜单,全方位降低隐私泄露风险 - 时讯资讯
  • 2026 年苏州上门测漏服务怎么选?精准定位不用瞎砸,5 家实测对比 - 趣闻早乐评
  • 终极免费音频转换器指南:fre:ac如何让音乐格式转换变得简单快速
  • C#操作Excel全攻略:COM、NPOI、EPPlus、OpenXML与云API深度对比
  • Loop Engineering:从提示词工程到AI应用开发的工程化循环方法论
  • 2026年毕业生黑科技榜单9款AI论文写作软件横评!
  • 【2026年电赛D题】设计报告:陆空协同无人机系统
  • Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势
  • BiliBili-UWP第三方客户端:Windows平台最完整的B站观影体验终极指南
  • STM32引脚复用与重映射:从硬件架构到实战配置的完整指南
  • German BERT模型实战:德语NLP优化与应用指南
  • 多层板回流焊鼓包、长期运行爆板?分层故障分析
  • 如何高效使用智能抢票工具:DamaiHelper自动化抢票助手全面指南
  • TREK:一个野心超出“旅行 App“本身的自托管协作规划平台
  • 2026 多方综合实测 TOP11 十六型人格测试榜单,全程零弹窗广告,规避各类营销诱导跳转 - 时讯资讯
  • 同样运营抖音小店,为何有人单日稳定几十单,有的人整整一个月没有订单? - 抖掌柜
  • C++ static关键字深度解析:从内存模型到单例模式实战
  • AI编程助手Token优化:90%节省的提示词设计与缓存策略
  • 基于Qt的桌面画笔应用开发:从QPainter到性能优化
  • FPGA开发必备:Testbench仿真测试平台搭建与调试实战指南
  • AI模拟答辩评委系统:技术原理与应用实践
  • 终极B站视频下载指南:如何用BiliDownloader轻松获取高清资源
  • Unity高性能滚动列表开发:FancyScrollView核心架构与实战指南
  • Cursor Pro破解工具终极指南:如何免费使用AI编程助手并解决试用限制问题
  • CAN XL核心技术解析:帧格式、物理层优化与智能驾驶应用
  • 全球半导体加热器行业市场深度研判:2026-2032期间年复合增长率(CAGR)为17.6%
  • TrguiNG汉化版:3个技巧让你彻底告别Transmission原生界面的烦恼