代码训练营第八天(Python)| 344.反转字符串、541. 反转字符串II、05.替换空格、151.翻转字符串里的单词、58-II.左旋转字符串
344.反转字符串
双指针法
时间复杂度为: O(n), 空间复杂度为: O(1)
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
left, right = 0, len(s) - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
return s
541. 反转字符串II
注意点: 使用切片处理掉边界的问题
方法一
class Solution:
def reverseStr(self, s: str, k: int) -> str:
def helper(s_list:list):
left, right = 0, len(s_list)-1
while left < right:
s_list[left], s_list[right] = s_list[right], s_list[left]
left += 1
right -= 1
return s_list
res_s = list(s)
for i in range(0, len(s), 2*k): # 每次 2k 的步距
res_s[i:i+k] = helper(res_s[i:i+k]) # 反转 k 或者小于k的列表
return "".join(res_s)
方法二
class Solution:
def reverseStr(self, s: str, k: int) -> str:
start = 0 # start 开始位置
while start < len(s):
rev_p = start + k # rev_p 需要反转的位置
s = s[:start] + s[start:rev_p][::-1] + s[rev_p:]
start += 2*k # 每次 2k 步距移动
return s
05.替换空格
class Solution:
def pathEncryption(self, path: str) -> str:
res = ""
for i in path:
if i == ".":
res += " "
else:
res += i
return res
151.翻转字符串里的单词
class Solution:
def reverseWords(self, s: str) -> str:
s_list = s.split() # split 不传参数获取非空格的元素
left, right = 0, len(s_list) - 1
while left < right:
s_list[left], s_list[right] = s_list[right], s_list[left]
left += 1
right -= 1
return " ".join(s_list)
58-II.左旋转字符串
1、使用切片
class Solution:
def dynamicPassword(self, password: str, target: int) -> str:
return password[target:] + password[:target]
2、使用自定义的reverse,以列表反转方式代替其他语言的原地字符串操作
class Solution:
def dynamicPassword(self, password: str, target: int) -> str:
password_l = list(password)
self.reverse(password_l, 0, target-1)
self.reverse(password_l, target, len(password_l)-1)
self.reverse(password_l, 0, len(password_l)-1)
return "".join(password_l)
def reverse(self, s_list, start, end):
while start < end:
s_list[start], s_list[end] = s_list[end], s_list[start]
start += 1
end -= 1
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~