牛客小白D题(STL的迭代器)
「只要我拉动绳线,你就得随之起舞。」 ——泰兹瑞
- 按下 f :紧接着一个小写字母 char,若当前光标后(右)方有至少一个 char ,将光标移动到其所在位置,否则不移动。
- 按下 x :删除当前光标所在位的字符,后面的字符均会前移一格。
- 按下 h :将光标向左(前)移动一格,若无法移动就不移动。
- 按下 l :将光标向右(后)移动一格,若无法移动就不移动。
- 若按下了其他字符:无任何效果。
- 按下 e :退出 Insert Mode(进入 Normal Mode)。
输入描述:
两行,第一行字符串 s ,第二行字符串 t 。
输出描述:
一行,威穆里最后留下的字符串。
说明
- 初始时,字符串为
,威穆处于 Normal Mode 。下划线表示光标所在位置。
- 第一步操作为 x ,删除当前光标所在位的字符,并且光标后移一格。字符串变为
。威穆仍处于 Normal Mode。
- 下一步操作为 f ,之后跟有一个字符 `l` 。光标后存在字符 `l` ,故移动到该位置。字符串变为
。威穆仍处于 Normal Mode。
- 下一步操作为 l ,光标后移一格。字符串变为
。威穆仍处于 Normal Mode。
- 下一步操作为 h ,光标前移一格。字符串变为
。威穆仍处于 Normal Mode。
- 下一步操作为 l ,光标后移一格。字符串变为
。威穆仍处于 Normal Mode。
- 下一步操作为 i ,威穆进入 Insert Mode。字符串仍为
。
- 下一步操作为 a ,而非 e ,故插入字符 a 。字符串变为
。
备注:
1 ≤ |s|, |t| ≤ 10
5
s, t 均由小写拉丁字母组成。 有点尴尬,当时写了一个双向链表。然后,赛后,用STL写写就过了。
#include<cstdio>
#include<list>
#include<stdio.h>
using namespace std;
list<char>ss; int main()
{
char c;
while (c = getchar(), c != '\n'){
ss.push_back(c);
}
bool flag = ;
list<char>::iterator it = ss.begin();
while (c = getchar(), c != '\n')
{
if (flag)
{
switch (c)
{
case 'i':{flag = ; }
break;
case 'f':{
char x = getchar();
list<char>::iterator ki = ++it; --it;
for (; ki != ss.end(); ++ki){
if (*ki == x){
it = ki; break;
}
}
}
break;
case 'x':{ss.erase(it++); }
break;
case 'h':{--it; if (it == ss.end())++it; }
break;
case 'l':{++it; if (it == ss.begin())--it; }
break;
default:
break;
}
}
else{
if (c == 'e')flag = ;
else{
ss.insert(it, c);
}
}
}
for (list<char>::iterator it = ss.begin(); it != ss.end(); ++it)
{
printf("%c", *it);
}
printf("\n");
}
牛客小白D题(STL的迭代器)的更多相关文章
- 牛客网 牛客小白月赛1 E.圆与三角形-公式题
E.圆与三角形 链接:https://www.nowcoder.com/acm/contest/85/E来源:牛客网 这个题把公式推一下, 发现就是1+sinA*r,sinA最大为1,所以 ...
- 树的最长链-POJ 1985 树的直径(最长链)+牛客小白月赛6-桃花
求树直径的方法在此转载一下大佬们的分析: 可以随便选择一个点开始进行bfs或者dfs,从而找到离该点最远的那个点(可以证明,离树上任意一点最远的点一定是树的某条直径的两端点之一:树的直径:树上的最长简 ...
- 牛客网刷题(纯java题型 31~60题)
牛客网刷题(纯java题型 31~60题) 重写Override应该满足"三同一大一小"三同:方法名相同,参数列表相同,返回值相同或者子类的返回值是父类的子类(这一点是经过验证的) ...
- 牛客网刷题(纯java题型 1~30题)
牛客网刷题(纯java题型 1~30题) 应该是先extend,然后implement class test extends A implements B { public static void m ...
- 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?
牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...
- 牛客网 牛客小白月赛1 I.あなたの蛙が帰っています-卡特兰数,组合数阶乘逆元快速幂
I.あなたの蛙が帰っています 链接:https://www.nowcoder.com/acm/contest/85/I来源:牛客网 这个题有点意思,是卡特兰数,自行百度就可以.卡特兰数用处 ...
- 牛客网 牛客小白月赛1 H.写真がとどいています
H.写真がとどいています 链接:https://www.nowcoder.com/acm/contest/85/H来源:牛客网 这个题数乱了,导致wa了好几次. 特别弱智,从A开始往上,就 ...
- 牛客网 牛客小白月赛1 F.三视图
F.三视图 链接:https://www.nowcoder.com/acm/contest/85/F来源:牛客网 这个题自己想一下三维的,正视图和左视图中y轴为行数,x轴和z轴是列数,因为 ...
- 牛客网 牛客小白月赛1 D.多项式乘法
D.多项式乘法 链接:https://www.nowcoder.com/acm/contest/85/D来源:牛客网 这个题想一下就能想出来了. 代码: 1 #include<iostrea ...
随机推荐
- 【学习笔记】JS设计模式总结
前言:这段时间都在学习Vue的知识,虽然手边放着一本js高程,但确实好久没有好好复习了.温故而知新,因此特意把JS常见的设计模式总结,希望对大家有所帮助... 1. 工厂模式 释义:像工厂一样流水线般 ...
- windows下mysql-5.7.18安装
在官网下载了mysql压缩包,按照官网:https://dev.mysql.com/doc/refman/5.7/en/windows-installation.html的教程安装,但是出错,后面根据 ...
- .net导出excle无需任何插件,直接通过一个tablehtml实现
项目背景: 项目需要导出样式复杂的excl表格,主要是一些样式布局比较复杂 技术分析: 目前比较通用的实现方式有 1.借助微软的excle插件 2.通过NPOI插件实现 3.直接导出一个html(ta ...
- c# 封装 Request操作类
/// <summary> /// 判断当前页面是否接收到了Post请求 /// </summary> /// <returns>是否接收到了Post请求</ ...
- ASP.NET Web API 启用跨域访问
自定义特性 要在WebApi中实现JSONP,一种方式是实现自定义特性 http://stackoverflow.com/questions/9421312/jsonp-with-asp-net-w ...
- c# 数字之间的计算
1.c# 65*1.0F/102=0.637254901960784 2.mysql TRUNCATE(65/102,9) 9代表的是保留几位小数 3.多张表关联,修改某张表的字段 UPDATE s ...
- 数据库和ado连接语句的使用总结
基本的sql语句 创建数据库:CREATE DATABASE database-name 删除数据库:drop database dbname 创建表:create table tabname(字段属 ...
- [PHP] 算法-把数组排成最小的数的PHP实现
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 解法1 1.数组排序, ...
- Java并发编程:synchronized、Lock、ReentrantLock以及ReadWriteLock的那些事儿
目录 前言 synchronized用法 修饰方法 修饰实例方法 修饰静态方法 同步代码块 引出Lock Lock用法 子类:ReentrantLock 读写分离锁:ReadWriteLock Loc ...
- 【读书笔记】iOS-访问iPod媒体库
iOS设备内部都有一个iPod媒体库,在这个媒体库中包含了音频和视频文件,它的来源主要是苹果公司的iTunes Store,现在苹果公司的iTunes Store内容很多,但能够下载到iPod媒体库的 ...