noip1996 字符串编辑 - 普及组 (模拟,字符串处理)
来源:互联网 发布:源码生成apk 编辑:程序博客网 时间:2024/06/05 17:35
A1102. 字符串编辑
时间限制:1.0s 内存限制:256.0MB
总提交次数:2044 AC次数:713 平均分:61.16
将本题分享到:
查看未格式化的试题 提交 试题讨论
试题来源
NOIP1996 普及组
问题描述
从键盘输入一个字符串(长度<=40个字符),并以字符 ’.’ 结束。编辑功能有:
1 D:删除一个字符,命令的方式为: D a 其中a为被删除的字符,例如:D s 表示删除字符 ’s’ ,若字符串中有多个 ‘s’,则删除第一次出现的。
2 I:插入一个字符,命令的格式为:I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符。例如:I s d 表示在指定字符 ’s’ 的前面插入字符 ‘d’ ,若原串中有多个 ‘s’ ,则插入在最后一个字符的前面。
3 R:替换一个字符,命令格式为:R a1 a2 其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1则应全部替换。
1 D:删除一个字符,命令的方式为: D a 其中a为被删除的字符,例如:D s 表示删除字符 ’s’ ,若字符串中有多个 ‘s’,则删除第一次出现的。
2 I:插入一个字符,命令的格式为:I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符。例如:I s d 表示在指定字符 ’s’ 的前面插入字符 ‘d’ ,若原串中有多个 ‘s’ ,则插入在最后一个字符的前面。
3 R:替换一个字符,命令格式为:R a1 a2 其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1则应全部替换。
输入格式
输入共两行,第一行为原串(以’.’结束),第二行为命令(输入方式参见“问题描述”)。
输出格式
输出共一行,为修改后的字符串或输出指定字符不存在的提示信息。
样例输入
This is a book.
D s
D s
样例输出
Thi is a book.
输入输出样例解释
命令为删去s,第一个在字符中出现的s在This中,即得到结果。
评测链接:http://www.tsinsen.com/A1102
解析:模拟。
c字符串(char数组)处理代码:
#include<cstdio>#include<cstring>using namespace std;char s[100];int main(){ int i,j,k,len; char a,b,c; bool flag; gets(s); a=getchar(); len=strlen(s); for(i=len-1;i>=0;i--) if(s[i]=='.'){len=i+1;break;} if(a=='D') { getchar(),b=getchar(); flag=0; for(i=0;i<len;i++) { if(s[i]!=b || flag)printf("%c",s[i]); else flag=1; } } if(a=='I') { getchar(),b=getchar(); getchar(),c=getchar(); j=100; for(i=len-1;i>=0;i--) if(s[i]==b){j=i;break;} for(i=0;i<len;i++) { if(i==j)printf("%c",c); printf("%c",s[i]); } } if(a=='R') { getchar(),b=getchar(); getchar(),c=getchar(); for(i=0;i<len;i++) if(s[i]==b)printf("%c",c); else printf("%c",s[i]); } printf("\n"); return 0; }
c++字符串(string)处理代码:
#include<iostream>#include<cstdio>#include<string>#include<cstring>using namespace std;int main(){ int i,j,k,len; string s,c1,c2,c3; size_t p; getline(cin,s),len=s.length(),c3=s[len]; for(i=0;i<len;i++)if(s[i]=='.')break; s.erase(i+1),len=s.length(); cin>>c1; switch(c1[0]) { case 'D':cin>>c2; p=s.find_first_of(c2); if(p<len)s.erase(p,1); break; case 'I':cin>>c2>>c3; p=s.find_last_of(c2); s.insert(p,c3); break; case 'R':cin>>c2>>c3; p=s.find_first_of(c2); while(p!=string::npos) { s[p]=c3[0]; p=s.find_first_of(c2,p+1); } break;} cout<<s<<endl; return 0;}
0 0
- noip1996 字符串编辑 - 普及组 (模拟,字符串处理)
- noip1996 乘法运算 - 普及组 (模拟)
- noip1996 格子位置 - 普及组 (模拟)
- noip1996 比赛安排 - 普及组+提高组 (hash判重)
- NOIP2000普及组 计算器的改良 Codevs1015 字符串复杂处理
- 普及练习场 字符串处理 潜伏者
- 普及练习场 字符串处理 拼数
- csu 1716 Morse(模拟,字符串处理)
- 普及练习场 交叉模拟 字符串的展开
- 【字符串处理】【模拟】NBA工资
- hdu2072 字符串处理 模拟 水题
- noip1996 挖地雷 - 提高组 (搜索)
- 【日常学习】【字符串处理】noip2011普及组第2题 统计单词数题解
- 字符串的展开(普及--提高)
- 普及练习场 字符串处理 斯诺登的密码
- 字符串编辑
- 字符串编辑
- Java字符串编辑(修剪字符串)
- Distinct Subsequences
- 关于在Eclipse中使用命令行的问题
- 我又回来了!
- poj3984迷宫问题【bfs+记录路径】
- linux下的Makefile详解(4)
- noip1996 字符串编辑 - 普及组 (模拟,字符串处理)
- Android 内核学习之三-----Power源码分析学习(3)
- poj 3278 Catch That Cow(BFS)
- C# MemoryStream和BinaryFormatter
- Service生命周期初步了解
- java图片截取上传
- 南邮 OJ 1625 素数判定问题
- PDF之itextsharp的使用开发历程1
- 【采集层】Kafka 与 Flume 如何选择