Editor(两种思路)

Editor
在这里插入图片描述

1.用STL的栈(由于是一个栈,无法实现 O ( 1 ) O(1) O(1)处理询问,无情TLE):

  • 注意光标范围,不能使数组越界
  • scanf注意不能吞入回车,用scanf(" %c",&c);处理
#include<iostream>
#include<stdio.h>
#include<vector>
#include<algorithm>
#define fo(i,a,b) for(int i=a;i<b;i++)
using namespace std;
vector<int> v;
int max_(int t){
    int res=v[0],sum=v[0];
    fo(i,1,t){
        sum+=v[i];
        if(res<sum)res=sum;
    }
    return res;
}
int main(){
    int n,t;
    char c;
    while(cin>>n){
        while(!v.empty())v.pop_back();
        int cur=0;
        while(n--){
            scanf(" %c",&c);
            if(c=='I'){
                scanf("%d",&t);
                v.insert(v.begin()+cur,t);
                cur++;
            }
            else if(c=='D' && cur>0){
                v.erase(v.begin()+cur-1);
                cur--;
            }
            else if(c=='L' && cur>0)cur--; 
            else if(c=='R' && cur<v.size())cur++;
            else{
                scanf("%d",&t);             
                printf("%d\n",max_(min(cur,t)));
            }
        }
    }
    return 0;
}

2.手写对顶栈,实现 O ( 1 ) O(1) O(1)处理询问(成功AC):

#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1000006, INF = 0x3f3f3f3f;
int q, st1[N], st2[N], s[N], f[N];
void Editor() {
    int t1 = 0, t2 = 0;
    while (q--) {
        char c[2];
        scanf("%s", c);
        switch (c[0]) {
            case 'I':
                scanf("%d", &st1[++t1]);
                s[t1] = s[t1-1] + st1[t1];
                f[t1] = max(f[t1-1], s[t1]);
                continue;
            case 'D':
                if (t1) t1--;
                continue;
            case 'L':
                if (t1) st2[++t2] = st1[t1--];
                continue;
            case 'R':
                if (!t2) continue;
                st1[++t1] = st2[t2--];
                s[t1] = s[t1-1] + st1[t1];
                f[t1] = max(f[t1-1], s[t1]);
                continue;
            case 'Q':
                int k;
                scanf("%d", &k);
                printf("%d\n", f[min(k,t1)]);
        }
    }
}
int main() {
    s[0] = 0;
    f[0] = -INF;
    while (cin >> q) Editor();
    return 0;
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Quill Editor是一个基于浏览器的富文本编辑器,它支持自定义工具栏、标准的富文本格式以及多个浏览器。在引用中,我们可以看到一个典型的Quill Editor实现,我们可以设置默认值、自定义样式和注册事件。 在引用中,我们可以看到Quill Editor的四个典型事件,它们分别是失去焦点事件、获得焦点事件、准备富文本编辑器和内容改变事件,你可以通过这些事件来增强Quill Editor的功能,例如更新内容、存储文本等。 以下是一个使用Quill Editor的简单示例: ```html <template> <div> <quill-editor class='editor' v-model="content" ref="myQuillEditor" :options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)" @change="onEditorChange($event)" @ready="onEditorReady($event)"></quill-editor> </div> </template> <script> import { quillEditor } from "vue-quill-editor"; import "quill/dist/quill.snow.css"; export default { components: { quillEditor, }, data() { return { content: "", editorOption: { placeholder: "请输入内容", modules: { toolbar: [ [{ header: [1, 2, false] }], ["bold", "italic", "underline", "strike"], [{ list: "ordered" }, { list: "bullet" }], ["link", "image"], ["clean"], ], }, }, }; }, methods: { onEditorBlur(quill) { console.log("editor blur!", quill); }, onEditorFocus(quill) { console.log("editor focus!", quill); }, onEditorReady(quill) { console.log("editor ready!", quill); }, onEditorChange({ quill, html, text }) { console.log("editor change!", quill, html, text); this.content = html; }, }, }; </script> ``` 在上述示例中,我们使用了Vue.js和Vue-Quill-Editor来实现Quill Editor的基本功能。我们通过在Vue组件中注册事件来增强Quill Editor的功能,例如更新内容、存储文本等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值