151. 翻转字符串里的单词
不用split
class Solution:
# 去除多余空格
def removeSpaces(self, s):
# 初始化双指针
left, right = 0, len(s) - 1
# 去除开头的空格
while left < right and s[left] == ' ':
left += 1
# 去除结尾的空格
while left < right and s[right] == ' ':
right -= 1
# new_s 存储去掉多余空格剩下的东西
new_s = []
# 去除单词间多余的空格
while left <= right:
if s[left] != ' ':
new_s.append(s[left])
# 如果当前是空格,且前一个字符不是空格,则添加
elif s[left] == ' ' and new_s[-1] != ' ':
new_s.append(s[left])
left += 1
return new_s
# 反转字符串
def reverseString(self, s):
# 初始化双指针
left, right = 0, len(s) - 1
# 这种方法可以不用判断元素奇偶
while left < right:
s[left], s[right] = s[right], s[left]
# 交换后,左指针右移,右指针左移
left += 1
right -= 1
return s
# 反转每个单词
def reverseEachword(self, s):
# 初始化指向每个单词前后的指针
left, right = 0, 0
n = len(s)
while left < n:
while right < n and s[right] != ' ':
right += 1
s[left : right] = self.reverseString(s[left : right])
# 反转完一个单词,该反转下个单词了
left = right + 1
right += 1
return s
def reverseWords(self, s: str) -> str:
# 第 1 步:去除空格
s = self.removeSpaces(s)
# 第 2 步:反转字符串
s = self.reverseString(s)
# 第 3 步:反转每个单词
s = self.reverseEachword(s)
# 第 4 步:输出翻转后的字符串
return ''.join(s)
作者:rocky0429-2
链接:https://leetcode-cn.com/problems/reverse-words-in-a-string/solution/acm-xuan-shou-tu-jie-leetcode-fan-zhuan-moi5x/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
6093. 设计一个文本编辑器
class TextEditor:
def __init__(self):
self.text = ''
self.i = 0
def addText(self, text: str) -> None:
self.text = self.text[:self.i] + text + self.text[self.i:]
self.i += len(text)
def deleteText(self, k: int) -> int:
mv = min(self.i, k)
self.text = self.text[:self.i-mv] + self.text[self.i:]
self.i -= mv
return mv
def cursorLeft(self, k: int) -> str:
self.i = max(0, self.i-k)
return self.text[max(0, self.i-10):self.i]
def cursorRight(self, k: int) -> str:
self.i = min(len(self.text), self.i+k)
return self.text[max(0, self.i-10):self.i]
作者:huang-bing-jun
链接:https://leetcode.cn/problems/design-a-text-editor/solution/by-huang-bing-jun-azxq/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。