力扣2296.设计一个文本编辑器

力扣2296.设计一个文本编辑器

  • 对顶栈

    • 将光标看作左右栈的分隔
    • 添加元素:往左栈添加元素
    • 删除元素:从左栈删除元素
    • 光标左(右)移:左(右)栈元素加到右(左)栈
cpp 复制代码
  class TextEditor {
      string left,right;
  public:
      TextEditor() {
  
      }
      
      void addText(string text) {
          left += text;
      }
      
      int deleteText(int k) {
          k = min(k,(int)left.size());
          left.resize(left.size() - k);
          return k;
      }
      
      string text()
      {
          return left.substr(max((int)left.size() - 10,0));
      }
      string cursorLeft(int k) {
          for(;k && !left.empty();k--)
          {
              right += left.back();
              left.pop_back();
          }
          return text();
      }
      
      string cursorRight(int k) 
      {
          for (; k && !right.empty(); --k) 
          {
              left += right.back();
              right.pop_back();
          }
          return text();
      }
  };
相关推荐
AI科技星19 小时前
质量定义方程常数k = 4π m_p的来源、推导与意义
服务器·数据结构·人工智能·科技·算法·机器学习·生活
摇摆的含羞草20 小时前
哈希(hash)算法使用特点及常见疑问解答
算法·哈希算法
FLGB20 小时前
maven漏洞检测报告
java·maven
农夫山泉2号20 小时前
【c++】——c++编译的so中函数有额外的字符
java·服务器·c++
wangan09420 小时前
不带圆圈的二叉树
java·前端·javascript
小马哥编程20 小时前
【软考架构】滑动窗口限流算法的原理是什么?
java·开发语言·架构
仰泳的熊猫20 小时前
1077 Kuchiguse
数据结构·c++·算法·pat考试
饕餮争锋20 小时前
Spring AOP原理简析
java·spring
LYFlied21 小时前
【每日算法】LeetCode 19. 删除链表的倒数第 N 个结点
算法·leetcode·链表
okseekw21 小时前
Maven从入门到实战:核心概念+配置详解+避坑指南
java·后端