力扣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();
      }
  };
相关推荐
Navigator_Z4 分钟前
LeetCode //C - 990. Satisfiability of Equality Equations
c语言·算法·leetcode
bbbb3654 分钟前
图算法的最优路径搜索与边界约束建模的技术7
算法
東雪木8 分钟前
编程算法学习——栈与队列算法
学习·算法·排序算法
左左右右左右摇晃9 分钟前
Java笔记——包装类(自动拆装箱)
java·笔记·python
CSDN_Colinw9 分钟前
C++中的工厂方法模式
开发语言·c++·算法
森林里的程序猿猿11 分钟前
Java深入理解并发、线程、与等待通知机制(一)
java
liulilittle13 分钟前
范围随机算法实现
开发语言·c++·算法·lua·c·js
夜空下的星13 分钟前
springboot实现Minio大文件分片下载
java·spring boot·后端
Huangxy__19 分钟前
接口的的的~
java
廋到被风吹走28 分钟前
【MySql】超时问题分析
java·数据库·mysql