力扣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 分钟前
Java 8-25 各个版本新特性总结
java·后端
Xの哲學11 分钟前
Linux SMP 实现机制深度剖析
linux·服务器·网络·算法·边缘计算
2501_9061505626 分钟前
私有部署问卷系统操作实战记录-DWSurvey
java·运维·服务器·spring·开源
wuk99834 分钟前
使用PCA算法进行故障诊断的MATLAB仿真
算法·matlab
额呃呃37 分钟前
二分查找细节理解
数据结构·算法
better_liang38 分钟前
每日Java面试场景题知识点之-TCP/IP协议栈与Socket编程
java·tcp/ip·计算机网络·网络编程·socket·面试题
无尽的罚坐人生43 分钟前
hot 100 283. 移动零
数据结构·算法·双指针
niucloud-admin1 小时前
java服务端——controller控制器
java·开发语言
To Be Clean Coder1 小时前
【Spring源码】通过 Bean 工厂获取 Bean 的过程
java·后端·spring
永远都不秃头的程序员(互关)1 小时前
C++动态数组实战:从手写到vector优化
c++·算法