力扣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();
      }
  };
相关推荐
LiRuiJie11 分钟前
深入剖析Spring Boot / Spring 应用中可自定义的扩展点
java·spring boot·spring
爬虫程序猿20 分钟前
利用 Java 爬虫获取淘宝商品 SKU 详细信息实战指南
java·开发语言·爬虫
楼田莉子31 分钟前
C++算法专题学习——分治
数据结构·c++·学习·算法·leetcode·排序算法
一支鱼1 小时前
leetcode常用解题方案总结
前端·算法·leetcode
茶本无香1 小时前
RequestContextFilter介绍
java·spring·filter·requestcontext
ulias2121 小时前
各种背包问题简述
数据结构·c++·算法·动态规划
iナナ1 小时前
初识JVM
java·jvm
m0_570466411 小时前
代码随想录算法训练营第二十八天 | 买卖股票的最佳实际、跳跃游戏、K次取反后最大化的数组和
java·开发语言·算法