力扣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();
      }
  };
相关推荐
菜菜的顾清寒6 小时前
力扣HOT100(51) 动态规划-单词拆分
算法·leetcode·动态规划
土狗TuGou6 小时前
SQL进阶笔记 · 第1篇:存储引擎
java·数据库·笔记·后端·sql·mysql
风筝在晴天搁浅6 小时前
剑指Offer LCR 143.子结构判断
算法
雨落在了我的手上6 小时前
Java数据结构(一):初识集合框架
java·开发语言
码语智行6 小时前
Spring Security自定义AuthenticationManager实现手机号/密码双认证
java·后端·spring
SuniaWang6 小时前
《AgentX 专栏》07-全链路可观测:用OpenTelemetry+Jaeger让每次AI对话都可追踪可复盘
java·人工智能·spring·架构·langchain·opentelemetry·agenx
fengxin_rou6 小时前
【从零开始的JUC并发第五章】:线程池详解
java·jvm·spring
咖啡八杯6 小时前
GoF设计模式——装饰模式
java·算法·设计模式·装饰器模式
_Aaron___6 小时前
RAG 知识库越用越脏?先把“增量更新”设计清楚
java·人工智能
装不满的克莱因瓶6 小时前
实现矩阵的点积:从数学原理到 NumPy 实战
人工智能·线性代数·算法·机器学习·矩阵·numpy