344.反转字符串
# 思路:双指针(左右,向中间)
541. 反转字符串II
# 要义:range(a,b,step)
替换数字
# 非常有意思的题目:1. 创建一个大小正好的数组 2. 两个指针,从右往左遍历
151.翻转字符串里的单词
# 考察字符串综合操作
# 普通做法:
'''
1.split分割
2.倒叙
'''
class Solution:
def reverseWords(self, s: str) -> str:
result = []
word_list = s.split(" ")
for word in word_list[::-1]:
if word:
result.append(word)
return ' '.join(result)
# 好思路(假如字符串可以直接操作):
'''
1. 移除多余的空格:
使用《双指针》(快慢)的办法,快捷、无需额外空间 删除列表中的元素。
2. 反转所有的char,然后反转每个单词:
使用《双指针》(左右)的办法,无需额外空间 反转列表中的元素。
'''
右旋字符串s
# 右旋转字符串
class Solution:
def reverse(my_list):
left = 0
right = len(my_list)-1
while left < right:
my_list[left], my_list[right] = my_list[right],mylist[left]
left += 1
right -= 1
return my_list
def right_k(k, s):
my_list = list(s)
my_list = self.reverse(my_list)
left_part = Solution.reverse(my_list[:k])
right_part = Solution.reverse(my_list[k:])
return ''.join(left_part + right_part)
思路同样是先反转整个字符串,然后局部再次反转