前言
每日一刷,从己做起。
一、左旋转字符
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
def reverse_sub(lst, left, right ) -> str:
while left < right:
lst[left], lst[right] = lst[right], lst[left]
left += 1
right -= 1
res = list(s)
end = len(res) - 1
reverse_sub(res, 0, n-1)
reverse_sub(res, n, end)
reverse_sub(res, 0, end)
return ''.join(res)
二、反转字符串中的单词
class Solution:
def trim_spaces(self, s):
n = len(s)
left = 0
right = n - 1
while left <= right and s[left] == ' ':
left += 1
while left <= right and s[right] == ' ':
right -= 1
tmp = []
while left <= right:
if s[left] != ' ':
tmp.append(s[left])
elif tmp[-1] != ' ':
tmp.append(s[left])
left += 1
return tmp
#翻转字符数组
def reverse_string(self, nums, left, right):
while left < right:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
return None
#翻转每个单词
def reverse_each_word(self, nums):
start = 0
end = 0
n = len(nums)
while start < n:
while end < n and nums[end] != ' ':
end += 1
self.reverse_string(nums, start, end - 1)
start += 1
end += 1
return None
#翻转字符中的单词
def reverseWords(self, s: str) -> str:
l = self.trim_spaces(s)
self.reverse_string(l, 0, len(l) - 1)
self.reverse_each_word(l)
return ''.join(l)
三、替换空格
class Solution:
def replaceSpace(self, s: str) -> str:
counter = s.count(' ')
res = list(s)
res.extend([''] * counter * 2)
left, right = len(s) - 1, len(res) - 1
while left >= 0:
if res[left] != ' ':
res[right] = res[left]
right -= 1
else:
res[right - 2: right + 1] = '%20'
right -= 3
left -= 1
return ''.join(res)
四、反转字符串
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
五、反转字符串II
class Solution:
def reverseStr(self, s: str, k: int) -> str:
def reverse_substring(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 cur in range(0, len(s), 2*k):
res[cur: cur + k] = reverse_substring(res[cur: cur + k ])
return ''.join(res)
总结
继续加油