厦大C语言上机 1425 字符串的增添
2018-01-13 13:20
363 查看
1425.字符串的增添(分值:2)
时间限制: 1000 MS 内存限制: 65536 K
提交数: 18 (9 users) 通过数: 0 (0 users)
问题描述
这道题的要求是:给定一个字符串s,每次进行下列两种操作之一:
(1) add x q 在第x个位置添加字母q
(2) delete x 删除第x个位置的字母
假设长度为n的字符串s = c1c2c3c4...cn (其中ci(1 <= i <= n)表示字符串第i个位置的字母),则:
(1) 对于第一种操作,表示在字母cx-1和cx之间插入字母q,当x为1的时候表示在字符串头部插入字母q,x为n + 1的时候表示在字符串的末尾插入字母q
(2) 对于第二种操作,表示删除第x个位置的字母,就是删除字母cx
输入格式
输入的第一行为一个长度不超过1000的非空字符串s,接下的一行有一个数字n(1 <= n <= 1000)代表操作的次数。接下来的n行每行有题述的2种之一的操作。输入保证所有的操作都是合法的,不存在在不正确的位置插入字符或在无效的位置删除字符,且保证每次操作后得到的字符串都为非空字符串。输入的所有字符都为小写的字母。
输出格式
输出一行字符串,表示经过n次操作后得到的字符串。
样例输入
hello
5
delete 2
delete 2
delete 2
add 2 i
delete 3
样例输出
hi
来源
doraemon @ xmu
时间限制: 1000 MS 内存限制: 65536 K
提交数: 18 (9 users) 通过数: 0 (0 users)
问题描述
这道题的要求是:给定一个字符串s,每次进行下列两种操作之一:
(1) add x q 在第x个位置添加字母q
(2) delete x 删除第x个位置的字母
假设长度为n的字符串s = c1c2c3c4...cn (其中ci(1 <= i <= n)表示字符串第i个位置的字母),则:
(1) 对于第一种操作,表示在字母cx-1和cx之间插入字母q,当x为1的时候表示在字符串头部插入字母q,x为n + 1的时候表示在字符串的末尾插入字母q
(2) 对于第二种操作,表示删除第x个位置的字母,就是删除字母cx
输入格式
输入的第一行为一个长度不超过1000的非空字符串s,接下的一行有一个数字n(1 <= n <= 1000)代表操作的次数。接下来的n行每行有题述的2种之一的操作。输入保证所有的操作都是合法的,不存在在不正确的位置插入字符或在无效的位置删除字符,且保证每次操作后得到的字符串都为非空字符串。输入的所有字符都为小写的字母。
输出格式
输出一行字符串,表示经过n次操作后得到的字符串。
样例输入
hello
5
delete 2
delete 2
delete 2
add 2 i
delete 3
样例输出
hi
来源
doraemon @ xmu
#include <stdio.h> #include <string.h> void add(char *s, int x, char q) { int len_s = (int)strlen(s); int i; s[len_s + 1] = '\0'; for (i = len_s; i >= 0; --i) { if (i == x) { s[i] = q; return; } s[i] = s[i-1]; } } void delete(char *s, int x) { int len_s = (int)strlen(s); int i; for (i = x; i < len_s - 1; ++i) s[i] = s[i+1]; s[len_s - 1] = '\0'; } int main() { char s[2005] = { 0 }; int n; char operator[10] = { 0 }; int x; char q; scanf("%s", s); scanf("%d", &n); while (n--) { scanf("%s", operator); if (!strcmp(operator, "add")) { scanf("%d %c", &x, &q); add(s, x-1, q); } else { scanf("%d", &x); delete(s, x-1); } } printf("%s\n", s); return 0; }
相关文章推荐
- 厦大C语言上机 1265 字符串后继
- 厦大C语言上机 1503 字符串处理
- 厦大C语言上机 1504 整数编号
- 厦大C语言上机 1359 四则运算器
- 厦大C语言上机 1400 出队统计
- 厦大C语言上机 1374 进制转换
- 厦大C语言上机 1401 寻找最大内角
- 厦大C语言上机 1491 子串删除
- 厦大C语言上机 1361 分数约简
- 厦大C语言上机 1377 寻书之旅1
- 厦大C语言上机 1378 寻书之旅2
- 厦大C语言上机 1402 第K早之日
- 厦大C语言上机 1492 破译时间密码
- 厦大C语言上机 1379 合并队伍
- 厦大C语言上机 1413 模式匹配
- 厦大C语言上机 1493 数据查找
- 厦大C语言上机 1381 不重叠子串数
- 厦大C语言上机 1417 A+B
- 厦大C语言上机 1494 简单链表
- C语言上机测试题 递归倒序输出字符串