Advertisement
ambition-xx

t4

Jun 4th, 2022
890
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 0
  1. class TextEditor {
  2.    
  3.     string _text;
  4.     int cur;
  5. public:
  6.    
  7.     TextEditor()  {
  8.         _text = "";
  9.         cur = 0;
  10.     }
  11.    
  12.     void addText(string text) {
  13.          // printf("add : %s\n", text.data());
  14.         _text.insert(cur,text);
  15.         cur += text.size();
  16.          // cout <<" "<< " text = "<< _text << " cur = " << cur << endl;
  17.     }
  18.    
  19.     int deleteText(int k) {
  20.          // printf("delete : %d\n", k);
  21.         if(k > cur){
  22.             // printf("case 1\n");
  23.             _text.erase(0, cur);
  24.             // printf("text = %s cur = %d\n", _text.data(), cur);
  25.             k = cur;
  26.             cur = 0;
  27.             return k;
  28.         } else {
  29.             // printf("case 2\n");
  30.             _text.erase(cur - k , k);
  31.             // cout << _text << endl;
  32.             // printf("text = %s", _text.data());
  33.             cur -= k;
  34.             // cout << " delete "<< " text = "<<_text << " cur = " << cur << endl;
  35.             return k;
  36.         }
  37.        
  38.     }
  39.    
  40.     string cursorLeft(int k) {
  41.         // printf("left : %d\n", k);
  42.         if(k > cur){
  43.             cur = 0;
  44.             return "";
  45.         } else {
  46.             cur -= k;
  47.             int d = min(10, cur);
  48.             // cout << " "<< " text = "<< _text << " cur = " << cur << endl;
  49.             return _text.substr(cur - d, d);
  50.         }
  51.        
  52.     }
  53.    
  54.     string cursorRight(int k) {
  55.          // printf("right : %d\n", k);
  56.         if(cur + k > _text.size()){
  57.             cur = _text.size();
  58.             int d = min(10, cur);
  59.             // printf("text = %s cur = %d\n", _text.data(), cur);
  60.             return _text.substr(cur - d, d);
  61.         } else {
  62.             cur += k;
  63.             int d = min(10, cur);
  64.              // cout << " "<< " text = "<< _text << " cur = " << cur << endl;
  65.             return _text.substr(cur - d, d);
  66.         }
  67.        
  68.     }
  69. };
  70.  
  71. /**
  72.  * Your TextEditor object will be instantiated and called as such:
  73.  * TextEditor* obj = new TextEditor();
  74.  * obj->addText(text);
  75.  * int param_2 = obj->deleteText(k);
  76.  * string param_3 = obj->cursorLeft(k);
  77.  * string param_4 = obj->cursorRight(k);
  78.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement