机试题——编辑器

news/2025/2/26 3:04:57/

题目描述

该编辑器有以下功能:

  1. 插入insert str。表示将字符串str插入到当前游标所处位置,同时游标移动到str的右边。
  2. 删除delete len。表示将游标左边长度为len的字符串删除。要求该功能命令合法,即len≥0,如果len<0或者len大于字符串长度,则认为输入非法,不进行操作。
  3. 移动move cnt。将游标移动cnt次,如果为负数,向左移动,为正数,向右移动。如果cnt超过字符串左右边界,那么认为非法,不进行移动。
  4. 复制copy。将游标左边字符串复制并插入到游标的右边。游标位置不变。

输入描述

每行仅输入一个功能对应的操作。如果为end,代表操作结束。

初始时,字符串为空。游标位置为0

  • 1 ≤ str.length ≤ 40
  • 1 ≤ len ≤ 40
  • -40 ≤ cnt ≤ 40
  • 调用insertdeletemovecopy的总次数不超过200次。

输出描述

最终的文本结果,注意,结果应当包含游标,用|表示。

用例输入

insert test
insert pass
move 10
delete 4
insert fail
move -4
copy
end
test|testfail

解题思路

  1. 数据结构设计
    • 使用一个字符串res来存储当前文本内容。
    • 使用一个整数p表示游标位置。
  2. 功能实现
    • 插入:使用string::insert方法将字符串插入到游标位置,并更新游标位置。
    • 删除:检查删除长度是否合法,如果合法,则从游标左边删除指定长度的字符,并更新游标位置。
    • 移动:检查移动后的位置是否超出边界,如果合法,则更新游标位置。
    • 复制:将游标左边的字符串复制并插入到游标右边,游标位置不变。
  3. 最终输出
    • 在游标位置插入|,然后输出整个字符串。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<algorithm>
#include<string>
#include<vector>
#include<unordered_map>
#include<unordered_set>
#include<queue>
#include<set>
#include<list>
#include<sstream>
#include<bitset>
#include<stack>
#include<climits>
using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);string res = "";int p = 0; // 游标位置string c;while (cin >> c && c != "end") {if (c == "end") return 0;else if (c == "insert") {string temp;cin >> temp;res.insert(p, temp); // 在游标位置插入字符串p += temp.size(); // 游标移动到插入字符串的右边}else if (c == "delete") {string temp;cin >> temp;int len = atoi(temp.c_str());if (len > p || len <= 0) continue; // 检查删除操作是否合法for (int i = 0; i < len; i++) {res.erase(res.begin() + p - 1); // 从游标左边删除字符p--; // 游标位置更新}}else if (c == "move") {string temp;cin >> temp;int cnt = atoi(temp.c_str());if (p + cnt < 0 || p + cnt > res.size()) continue; // 检查移动操作是否合法p += cnt; // 更新游标位置}else {// copystring cur = res.substr(0, p); // 获取游标左边的字符串res.insert(p, cur); // 将其复制到游标右边}}for (int i = 0; i < res.size(); i++) {if (i == p) {cout << "|"; // 在游标位置插入 |}cout << res[i];}return 0;
}

http://www.ppmy.cn/news/1574938.html

相关文章

云电脑接入DeepSeek?探讨ToDesk云电脑、海马云、顺网云的AI潜能

目录 前言一、云电脑相比实体电脑部署DeepSeek的优势二、DeepSeek云电脑实操1、ToDesk云电脑2、海马云3、顺网云 三、DeepSeek R1模型与云电脑适配性分析1、基本配置分析2、文本推理测试 四、云电脑选型看点1、跨平台兼容性2、文件存储3、关键技术4、安全与隐私5、用户体验 五、…

源码压缩包泄露

##解题思路 因为网站的文件都放在www下面&#xff0c;所以直接访问/www.zip就可以得到网页的源码压缩包 在fl000g.txt这个文件中看到一个flag{flag_here}不像是真的flag&#xff0c;尝试提交ctfshow{flag_here}&#xff0c;果然提交失败 打开文件属性之类的&#xff0c;也没有…

Java集合并发安全面试题

Java集合并发安全面试题 同步包装器 Q1: Collections的同步包装器是如何实现线程安全的&#xff1f; public class SynchronizedWrapperExample {// 1. 基本使用public void demonstrateSynchronizedCollections() {// 创建同步ListList<String> syncList Collection…

fpga助教面试题

第一题 module sfp_pwm( input wire clk, //clk is 200M input wire rst_n, input wire clk_10M_i, input wire PPS_i, output reg pwm ) reg [6:0] cunt ;always (posedge clk ) beginif(!rst_n)cunt<0;else if(cunt19) //200M是10M的20倍cunt<0;elsecunt<cunt1;…

DeepSeek为云厂商带来新机遇,东吴证券看好AI带动百度智能云增长

近日&#xff0c;摩根士丹利&#xff08;亚洲&#xff09;发布研究报告《DeepSeek-Al Bifurcation》&#xff0c;报告指出DeepSeek的爆火催生了低成本人工智能市场&#xff0c;为数据中心、芯片及云服务提供商带来新的发展机遇。 同时&#xff0c;东吴证券发布研究报告维持百度…

Python 学习之旅:高级阶段(十六)Web 开发之路由和视图函数

在 Python 的 Web 开发领域,路由和视图函数是构建 Web 应用不可或缺的部分。它们就像是 Web 应用的 “交通枢纽” 和 “服务窗口”,路由负责引导用户请求到达正确的处理地点,而视图函数则负责处理这些请求并返回相应的响应。接下来,我们将以 Flask 框架为例,深入了解路由和…

Oracle 深入理解Lock和Latch ,解析访问数据块全流程

Oracle 锁机制介绍 根据保护对象的不同&#xff0c;单实例Oracle数据库锁可以分为以下几大类&#xff1a; DML lock&#xff08;data locks&#xff0c;数据锁&#xff09;&#xff1a;用于保护数据的完整性&#xff1b; DDL lock&#xff08;dictionary locks&#xff0c;字典…

去耦电容的作用详解

在霍尔元件的实际应用过程中&#xff0c;经常会用到去耦电容。去耦电容是电路中装设在元件的电源端的电容&#xff0c;其作用详解如下&#xff1a; 一、基本概念 去耦电容&#xff0c;也称退耦电容&#xff0c;是把输出信号的干扰作为滤除对象。它通常安装在集成电路&#xf…