日报
题目
一、2296. 设计一个文本编辑器
链接: 2296. 设计一个文本编辑器
1. 题目描述
2. 思路分析
- 这题是7周前周赛T4,当时得益于python底层切片优化,无脑做的。
- 实际思路应该是对顶栈,即两个栈基于光标移动互相倒腾。
- 优化的话除了gc也没啥可做的。
3. 代码实现
import gc;gc.disable()
class TextEditor:
__slots__ = 'left', 'right'
def __init__(self):
self.left = [] # 两个栈
self.right = []
def addText(self, text: str) -> None:
self.left.extend(text)
def deleteText(self, k: int) -> int:
ans = 0
while self.left and ans<k:
self.left.pop()
ans += 1
return ans
def cursorLeft(self, k: int) -> str:
for _ in range(min(k,len(self.left))):
self.right.append(self.left.pop())
k-= 1
return ''.join(self.left[-10:])
def cursorRight(self, k: int) -> str:
for _ in range(min(k,len(self.right))):
self.left.append(self.right.pop())
return ''.join(self.left[-10:])