1 leetcode151.翻转字符串里的单词
题目链接:151. 反转字符串中的单词 - 力扣(LeetCode)
文章链接:代码随想录
视频链接:字符串复杂操作拿捏了! | LeetCode:151.翻转字符串里的单词_哔哩哔哩_bilibili
自己的思路:直接将空格去掉,然后分割字符串为列表,在列表中进行翻转,不在字符串内部操作,因为字符串不可以操作
1.1 自己的代码
class Solution:
def reverseWords(self, s: str) -> str:
s = s.split()
s = list(s)
left = 0
right = len(s)-1
while left<right:
s[left],s[right] = s[right],s[left]
left +=1
right -=1
return ' '.join(s)
1.2 视频后的学习
1.2.1 字符串内部的操作
思路
- 先对字符串首尾空格进行删除的操作
- 翻转整个字符串
- 将翻转后的字符串用split分割
- 对分割后的字符串在进行翻转
- 用
join
函数进行连接
细节:
- 删除字符串中的首尾空格是
str.strip()
- 将字符串分割为列表是
str.split()
class Solution:
def reverseWords(self, s: str) -> str:
s= s.strip()
s = s[::-1]
word = ' '.join(words[::-1] for words in s.split())
return word
1.2.2 拆分+翻转
思路
- 先将字符串拆分成列表
- 对列表内的元素进行翻转
- 使用
join
函数对其进行连接
class Solution:
def reverseWords(self, s: str) -> str:
s= s.split()
s= s[::-1]
return ' '.join(s)
1.3 本题小结
- python中字符串类型是不可变类型,所以必须要转换成列表再进行后面的操作
- 学会了两个函数
split()
将字符串拆分成数组;strip()
函数是将字符串头尾的空格删除
2. 卡码网55.右旋字符串
题目链接:55. 右旋字符串(第八期模拟笔试)
文章链接:右旋字符串 | 代码随想录
自己的思路:开始真的有些不知所措,看了别人的方法觉得自己真的有点傻,,,
2.1文章学习思路
2.1.1 直接切片翻转
k = int(input())
s = input()
print(s[-k:]+s[:-k])
2.1.2 切片位置变化
k = int(input())
s = input()
print(s[len(s)-k:]+s[:len(s)-k])
2.2 本题小结
- 这道题开始没思路,后来看了别人的方法,默默说了一句,我好傻呀,这题我都不会做
- python中我对切片掌握的真的还没那么好,所以要记住字符串不能换位置但是可以切片
3.本章小结
- 这一块的题目整体而言比较简单,但是就是思考起来,切片掌握的真的不是很好,总是不知道如何切片,日常使用过程中也是经常使用索引,所以这个知识点给忘了
split
函数是将字符串转换成列表的strip
函数是将字符串的首尾空格去掉的- 学习一下KMP,但是题肯定是很难学会的,下次再刷题再学一遍