力扣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();
      }
  };
相关推荐
爬山算法几秒前
Hibernate(74)如何在CQRS架构中使用Hibernate?
java·架构·hibernate
j445566112 分钟前
C++中的职责链模式高级应用
开发语言·c++·算法
uesowys5 分钟前
Apache Spark算法开发指导-Decision tree classifier
算法·决策树·spark
jjjava2.09 分钟前
深入解析Set与Map的奥秘
java·开发语言
池央14 分钟前
贪心算法-最大数
算法·贪心算法
白宇横流学长15 分钟前
基于Java的火车票订票系统的设计与开发
java·开发语言
黎雁·泠崖15 分钟前
Java核心基础API学习总结:从Object到包装类的核心知识体系
java·开发语言·学习
Yvonne爱编码18 分钟前
JAVA数据结构 DAY1-集合和时空复杂度
java·数据结构·python
iAkuya20 分钟前
(leetcode)力扣100 57电话号码的字母组合(回溯)
算法·leetcode·深度优先
m0_7369191032 分钟前
模板元编程性能分析
开发语言·c++·算法