思路:针对在数组移动+数组中间任意插入->可以用对顶栈(即堆顶相对的两个栈,用string vector模拟stack,就能取当前位置左边或者右边某几个元素了)
class TextEditor {
public:
string l, r;
TextEditor() {
}
void addText(string text) {
l += text;
}
int deleteText(int k) {
int cnt = 0;
while (l.size() && k) {
l.pop_back();
k--;
cnt++;
}
return cnt;
}
string cursorLeft(int k) {
char ch;
while (l.size() && k--) {
ch = l.back();
l.pop_back();
r.push_back(ch);
}
if (l.size() >= 10) return l.substr(l.size() - 10, 10);
else return l;
}
string cursorRight(int k) {
char ch;
while (r.size() && k--) {
ch = r.back();
r.pop_back();
l.push_back(ch);
}
if (l.size() >= 10) return l.substr(l.size() - 10, 10);
else return l;
}
};