力扣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();
      }
  };
相关推荐
骑自行车的码农1 分钟前
【React用到的一些算法】游标和栈
算法·react.js
浮游本尊2 分钟前
Java学习第21天 - 微服务架构设计
java
渣哥5 分钟前
Java CyclicBarrier 详解:原理、使用方式与应用场景
java
杨杨杨大侠12 分钟前
打开 JVM 黑匣子——走进 Java 字节码(一)
java·jvm·agent
SimonKing13 分钟前
接口调用总失败?试试Spring官方重试框架Spring-Retry
java·后端·程序员
咖啡Beans14 分钟前
SpringCloud网关Gateway功能实现
java·spring cloud
杨杨杨大侠15 分钟前
Atlas Mapper 案例 01:初级开发者 - 电商订单系统开发
java·开源·github
华仔啊16 分钟前
Java 8都出了这么多年,Optional还是没人用?到底卡在哪了?
java
用户0918 分钟前
Gradle Cache Entries 深度探索
android·java·kotlin
博笙困了25 分钟前
AcWing学习——双指针算法
c++·算法