网站备案照,品牌推广服务,个人网站 名称,现在的网站开发都用什么开发文章目录1. 题目2. 解题1. 题目
请你设计一个带光标的文本编辑器#xff0c;它可以实现以下功能#xff1a;
添加#xff1a;在光标所在处添加文本。删除#xff1a;在光标所在处删除文本#xff08;模拟键盘的删除键#xff09;。移动#xff1a;将光标往左或者往右移…
文章目录1. 题目2. 解题1. 题目
请你设计一个带光标的文本编辑器它可以实现以下功能
添加在光标所在处添加文本。删除在光标所在处删除文本模拟键盘的删除键。移动将光标往左或者往右移动。
当删除文本时只有光标左边的字符会被删除。 光标会留在文本内也就是说任意时候 0 cursor.position currentText.length 都成立。
请你实现 TextEditor 类
TextEditor() 用空文本初始化对象。void addText(string text) 将 text 添加到光标所在位置。添加完后光标在 text 的右边。int deleteText(int k) 删除光标左边 k 个字符。返回实际删除的字符数目。string cursorLeft(int k) 将光标向左移动 k 次。返回移动后光标左边 min(10, len) 个字符其中 len 是光标左边的字符数目。string cursorRight(int k) 将光标向右移动 k 次。返回移动后光标左边 min(10, len) 个字符其中 len 是光标左边的字符数目。
示例 1
输入
[TextEditor, addText, deleteText, addText, cursorRight, cursorLeft, deleteText, cursorLeft, cursorRight]
[[], [leetcode], [4], [practice], [3], [8], [10], [2], [6]]
输出
[null, null, 4, null, etpractice, leet, 4, , practi]解释
TextEditor textEditor new TextEditor(); // 当前 text 为 | 。| 字符表示光标
textEditor.addText(leetcode); // 当前文本为 leetcode| 。
textEditor.deleteText(4); // 返回 4// 当前文本为 leet| 。// 删除了 4 个字符。
textEditor.addText(practice); // 当前文本为 leetpractice| 。
textEditor.cursorRight(3); // 返回 etpractice// 当前文本为 leetpractice|. // 光标无法移动到文本以外所以无法移动。// etpractice 是光标左边的 10 个字符。
textEditor.cursorLeft(8); // 返回 leet// 当前文本为 leet|practice 。// leet 是光标左边的 min(10, 4) 4 个字符。
textEditor.deleteText(10); // 返回 4// 当前文本为 |practice 。// 只有 4 个字符被删除了。
textEditor.cursorLeft(2); // 返回 // 当前文本为 |practice 。// 光标无法移动到文本以外所以无法移动。// 是光标左边的 min(10, 0) 0 个字符。
textEditor.cursorRight(6); // 返回 practi// 当前文本为 practi|ce 。// practi 是光标左边的 min(10, 6) 6 个字符。提示
1 text.length, k 40
text 只含有小写英文字母。
调用 addText deleteText cursorLeft 和 cursorRight 的 总 次数不超过 2 * 10^4 次。来源力扣LeetCode 链接https://leetcode.cn/problems/design-a-text-editor 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
使用 python 的 list 模拟l r 分别存储光标左侧 和 右侧 的字符
class TextEditor:def __init__(self):self.l []self.r []def addText(self, text: str) - None:for t in text:self.l.append(t)def deleteText(self, k: int) - int:ct min(k, len(self.l))for i in range(ct):self.l.pop()return ctdef cursorLeft(self, k: int) - str:ct min(k, len(self.l))for i in range(ct):self.r.append(self.l.pop())return .join(self.l[-min(len(self.l), 10):])def cursorRight(self, k: int) - str:ct min(k, len(self.r))for i in range(ct):self.l.append(self.r.pop())return .join(self.l[-min(len(self.l), 10):])
456 ms 38.3 MB Python3 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步