当前位置: 首页 > news >正文

OD 算法题 B卷【代码编辑器】

文章目录

  • 代码编辑器

代码编辑器

  • 编辑器的输入为已有的代码文本和指令序列,程序需输出编辑后的最终文本,指针初始位置位于文本的开头;
  • 支持的指令如下:
    • FORWARD x ,指针向右移动x,若超过了文本末尾,则将指针移动到文本末尾(最后一个索引之后);
    • BACKWARD x,指针向左移动x,若超过了文本的开头,则将指针移动到文本开头;
    • SEARCH-FORWARD word,从指针当前位置向右搜索word,并将指针移动到word的起始位置,若未找到,则保持指针位置不变;
    • SEARCH-BACKWARD word,同样向左查找word,并将指针移动到word的起始位置(未找到则不变);
    • INSERT word在指针当前位置前插入word,并将指针移动到word的结尾;
    • REPLACE word 在指针当前位置替换并插入字符;
    • DELETE x 在指针位置删除x个字符;
  • x为大于等于0的整数,word为无空格的字符串;

输入描述:
第一行输入命令列表的长度k;
第二行为原始文本
后续的k行为命令
输出描述:
编辑后的最终文本

示例1
输入:
1
ello
INSERT h
输出:
hello

示例2
输入:
2
hllo
FORWARD 1
INSERT e
输出:
hello

示例3
输入:
2
hell
FORWARD 1000
INSERT o
输出:
hello

示例4
输入:
1
hello
REPLACE HELLO
输出:
HELLO

示例5
输入:
1
hello
REPLACE HELLOWORD
输出:
HELLOWORD

python实现

  • 简单的字符串操作

k = int(input().strip())
cnt = input().strip()
cnt_len = len(cnt)
cur_ptr = 0cmd_list = []
for i in range(k):cmd_list.append(input().strip())for i in cmd_list:cmd, param = i.split()# 定位操作if cmd in ["FORWARD", "BACKWARD"]:x = int(param)if cmd == "FORWARD": # 向右移动cur_ptr += xcur_ptr = min(cur_ptr, cnt_len)else:# 向左移动cur_ptr -= xcur_ptr = max(0, cur_ptr)elif cmd in ["SEARCH-FORWARD", "SEARCH-BACKWARD"]:# 搜索并定位if cmd == "SEARCH-FORWARD":  # 向右搜索r = cnt[cur_ptr:].find(param)if r != -1:cur_ptr += relse:# 向左搜索r = cnt[:cur_ptr].rfind(param)if r != -1:cur_ptr = relse:# 操作if cmd == "INSERT":cnt = cnt[:cur_ptr] + param + cnt[cur_ptr:]cur_ptr = cur_ptr + len(param) - 1elif cmd == "REPLACE":cnt = cnt[:cur_ptr] + param + cnt[cur_ptr+len(param):]elif cmd == "DELETE":x = int(param)cnt = cnt[:cur_ptr] + cnt[cur_ptr+x:]print(cnt)

相关文章:

  • Flotherm软件许可与硬件要求
  • 【复习】软件测试
  • RTOS:初始化新任务(含源码复杂点解读)
  • unity UI Canvas“高”性能写法
  • Unity-UI组件详解
  • 【mysql】BIGINT UNSIGNED字段被表示为float科学计数法 丢失精度问题
  • C++初赛的三讲
  • Java详解LeetCode 热题 100(25):LeetCode 141. 环形链表(Linked List Cycle)详解
  • web第八次课后作业--分层解耦
  • PS教程-萌新系统入门课课程视频+素材
  • String 学习总结
  • 力扣刷题 -- 232. 用栈实现队列
  • Android系统进程优先级
  • 组相对策略优化(GRPO):原理及源码解析
  • UE5 2D角色PaperZD插件动画状态机学习笔记
  • 支持TypeScript并打包为ESM/CommonJS/UMD三种格式的脚手架项目
  • 【python】三元图绘制(详细注释)
  • javascript 实战案例 二级联动下拉选框
  • 杭州白塔岭画室怎么样?和燕壹画室哪个好?
  • 6.RV1126-OPENCV 形态学基础膨胀及腐蚀
  • 3g网站开发/下店拓客团队
  • 个人网站模板怎么用/长春seo优化
  • 技术支持 光速东莞网站建设/企业建站 平台
  • 动画型网站/乱码链接怎么用
  • .php是什么网站/邯郸网站优化
  • 旅游网站模板文章/长沙营销推广