力扣2296.设计一个文本编辑器
-
对顶栈
-
- 将光标看作左右栈的分隔
- 添加元素:往左栈添加元素
- 删除元素:从左栈删除元素
- 光标左(右)移:左(右)栈元素加到右(左)栈
-
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(); } };