当前位置: 首页> 文旅> 旅游 > 烟台网站建设_企业策划书ppt_seo优化一般包括哪些内容_广东seo网络培训

烟台网站建设_企业策划书ppt_seo优化一般包括哪些内容_广东seo网络培训

时间:2025/7/11 7:40:57来源:https://blog.csdn.net/m0_67598823/article/details/145896965 浏览次数:0次
烟台网站建设_企业策划书ppt_seo优化一般包括哪些内容_广东seo网络培训

题目描述:

请你设计一个带光标的文本编辑器,它可以实现以下功能:

  • 添加:在光标所在处添加文本。
  • 删除:在光标所在处删除文本(模拟键盘的删除键)。
  • 移动:将光标往左或者往右移动。

当删除文本时,只有光标左边的字符会被删除。光标会留在文本内,也就是说任意时候 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 是光标左边的字符数目。

代码思路: 

__init__(self)

  • 初始化方法,创建了两个空字符串属性leftright
  • 这两个字符串分别用于存储光标左侧和右侧的文本。

addText(self, text: str) -> None

  • 功能:在光标当前位置(即left的末尾)添加文本。
  • 参数:text是要添加的字符串。
  • 实现:直接将text追加到left字符串的末尾。
  • 返回值:无。

deleteText(self, k: int) -> int

  • 功能:从光标当前位置(即left的末尾)向前删除k个字符。
  • 参数:k是要删除的字符数。
  • 实现:
    • 首先计算left的长度l1
    • 然后通过切片操作self.left[:-k]删除left末尾的k个字符。
    • 返回实际删除的字符数(由于left的长度变化,实际删除的字符数可能小于k,如果k大于left的长度)。
  • 返回值:实际删除的字符数。

cursorLeft(self, k: int) -> str

  • 功能:将光标向左移动k个字符位置,并将移动过的字符从left移动到right
  • 参数:k是光标向左移动的字符数。
  • 实现:
    • 通过切片操作self.left[-k:]获取left末尾的k个字符,并将它们移动到right的开头。
    • 同时,更新left,去掉末尾的k个字符。
    • 返回left的末尾10个字符(如果left长度小于10,则返回全部)。
  • 返回值:移动后left的末尾10个字符。

cursorRight(self, k: int) -> str

  • 功能:将光标向右移动k个字符位置,并将移动过的字符从right移动到left
  • 参数:k是光标向右移动的字符数。
  • 实现:
    • 通过切片操作self.right[:k]获取right开头的k个字符,并将它们移动到left的末尾。
    • 同时,更新right,去掉开头的k个字符。
    • 返回left的末尾10个字符(如果left长度小于10,则返回全部)。
  • 返回值:移动后left的末尾10个字符。

代码实现:

class TextEditor:def __init__(self):self.left = ""self.right = ""def addText(self, text: str) -> None:self.left += textdef deleteText(self, k: int) -> int:l1 = len(self.left)self.left = self.left[:-k]return l1 - len(self.left)def cursorLeft(self, k: int) -> str:self.right = self.left[-k:] + self.rightself.left = self.left[:-k]return self.left[-10:]def cursorRight(self, k: int) -> str:self.left = self.left + self.right[:k]self.right = self.right[k:]return self.left[-10:]

 

关键字:烟台网站建设_企业策划书ppt_seo优化一般包括哪些内容_广东seo网络培训

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: