牛客-小C的记事本——偏业务的代码实现

Posted C+++++++++++++++++++

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客-小C的记事本——偏业务的代码实现相关的知识,希望对你有一定的参考价值。

题目

题目链接

题目详解

读完题意这题基本就出来了,你就依着题目的意思设计一个类,实现这个功能即可。这题偏业务代码,所以只需要选好工具选型即可。

这里主要就是撤销功能的实现可能对某些没学过数据结构的小白而言有点难实现。

由于撤销功能支持多次撤销,所以直接用栈来保存每次改变后的文字结果。每次撤销操作只需要出栈即可。具体到C++可以用vector也可用stack都行。。

注意一个坑:多组输入!

解题代码

#include<bits/stdc++.h>

using namespace std;

struct textNote
    string text_cur;
    vector<string>pre_text;
    void append(string& src)
        pre_text.push_back(text_cur);
        text_cur.append(src);
    
    void del(int k)
        pre_text.push_back(text_cur);
        text_cur.erase(text_cur.end()-k,text_cur.end());
    
    void print(int pos)
        cout<<text_cur[pos-1]<<'\\n';
    
    void undo()
        text_cur = pre_text.back();
        pre_text.pop_back();
    
    void clear()
        pre_text.clear();
        text_cur.clear();
    
;

int main() 
    ios::sync_with_stdio(false);
    int n;
    textNote content;
    while (cin >> n) 
        while (n--)
            int p;cin>>p;
            int pos;
            string src;
            switch (p) 
                case 1:
                    cin>>src;
                    content.append(src);
                    break;
                case 2:
                    cin>>pos;
                    content.del(pos);
                    break;
                case 3:
                    cin>>pos;
                    content.print(pos);
                    break;
                case 4:
                    content.undo();
                    break;
            
        
        content.clear();
    
    return 0;

以上是关于牛客-小C的记事本——偏业务的代码实现的主要内容,如果未能解决你的问题,请参考以下文章

Java 实现小工具读取文件有多少个单词

牛客练习赛30 C 小K的疑惑(01分类+搜索)

牛客网 Wannafly挑战赛8 C-小C打比赛 (状压DP)

牛客练习赛30 C 小K的疑惑(01分类+搜索)

牛客小白月赛2 总结

牛客网挑战赛8