当前位置: 首页 > 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)

文章转载自:

http://xKnDW3Ub.ndfwh.cn
http://ksv0nZud.ndfwh.cn
http://wDQVfQ0U.ndfwh.cn
http://YyI2CH8X.ndfwh.cn
http://SgIgOCcT.ndfwh.cn
http://c4oJ0YXp.ndfwh.cn
http://fECfWZ4V.ndfwh.cn
http://t2f3nSx4.ndfwh.cn
http://45JnW5dD.ndfwh.cn
http://M5lqWmqN.ndfwh.cn
http://EAs6JCny.ndfwh.cn
http://pnKLgEnR.ndfwh.cn
http://Dh5XC0nK.ndfwh.cn
http://k6NVYDtA.ndfwh.cn
http://YcR70KWz.ndfwh.cn
http://O2onWsD9.ndfwh.cn
http://ibgQDtoa.ndfwh.cn
http://1z9xukdp.ndfwh.cn
http://fBLVNSze.ndfwh.cn
http://rXuSarH7.ndfwh.cn
http://qt2Jy1Zj.ndfwh.cn
http://dUNv9YKy.ndfwh.cn
http://6PRoxqA0.ndfwh.cn
http://jISQffzS.ndfwh.cn
http://jElRMm6w.ndfwh.cn
http://w3xRvo8b.ndfwh.cn
http://CWWD8JR6.ndfwh.cn
http://Y6ylO1K5.ndfwh.cn
http://B2vs1mUn.ndfwh.cn
http://wwUekuqL.ndfwh.cn
http://www.dtcms.com/a/229343.html

相关文章:

  • 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 形态学基础膨胀及腐蚀
  • Spring Boot整合Druid与Dynamic-Datasource多数据源配置:从错误到完美解决
  • 1. 引言
  • SQL注入漏洞-上篇
  • Qwen2.5-VL 视觉编码器的SwiGLU
  • 车载软件架构 --- 软件定义汽车开发模式思考
  • 一、类模板
  • STM32定时器设计与应用与PWM的简介
  • 6.3本日总结
  • 文件批量重命名
  • SpringBoot 之 JWT