344.反转字符串
题目链接
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
视频讲解
字符串基础操作! | LeetCode:344.反转字符串_哔哩哔哩_bilibili
笔记
- 使用双指针直接交换元素
Python代码
# 用双指针
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
left = 0
right = len(s) - 1
while left < right:
s[left],s[right] = s[right],s[left]
left += 1
right -= 1
541. 反转字符串II
题目链接
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
视频讲解
字符串操作进阶! | LeetCode:541. 反转字符串II_哔哩哔哩_bilibili
笔记
- 首先定义一个子函数,用于反转指定字串
- range(start, end, step)中指定step为2*k
- 对于切片,如果s='123',s[0:999]返回‘123’,也就是当字符串的实际长度不够切片的指定长度时,会返回全部字符串。对于本题如果最后剩的字符串不够k个,要全部反转,那么用res[i:i+k]是符合的;如果最后剩的字符串大于k个小于2k个,依然反转前k个,也是满足要求的
- 对字符串进行变化的题目,思路要想到把原始字符串转换为列表,然后对列表进行原地操作
Python代码
class Solution:
def reverseStr(self, s: str, k: int) -> str:
def reverseSubstring(text):
left, right = 0, len(text)-1
while left < right:
text[left], text[right] = text[right], text[left]
left += 1
right -= 1
return text
res = list(s)
for i in range(0, len(s), 2*k):
res[i: i + k] = reverseSubstring(res[i: i + k]) # 利用列表原地修改
return "".join(res)
剑指Offer 05.替换空格
题目链接
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
文章讲解
Python代码
class Solution:
def replaceSpace(self, s: str) -> str:
res = list(s)
for i in range(len(res)):
if res[i] == ' ':
res[i] = '%20'
return "".join(res)
# 用join + split
class Solution:
def replaceSpace(self, s: str) -> str:
return "%20".join(s.split(' '))
151.翻转字符串里的单词
题目链接
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
视频讲解
字符串复杂操作拿捏了! | LeetCode:151.翻转字符串里的单词_哔哩哔哩_bilibili
笔记
- split()函数括号中不加任何东西,默认可以按空格分割,并且把结果中的空字符串删除掉,留下有用信息
- 结合join和切片操作得到翻转效果
Python代码
class Solution:
def reverseWords(self, s: str) -> str:
res = s.split()
return " ".join(res[::-1])
剑指Offer58-II.左旋转字符串
题目链接
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
文章讲解
笔记
- 用切片操作和+运算符得到结果
Python代码
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
return s[n::]+s[0:n]