(eden)Delete character

Description:

If you have any doubt on this assignment, please send an email to its author 赵丹.

-->

Description

In this exercise, you will get two strings A and B in each test group and the length of every string is less than 40, you need to delete all characters which are contained in string B from string A.

The character may be space or letter.

Input

first line is a number n(0<n<=50), which stands for the number of test data.

the next 2*n lines contain 2*n strings, and each group of test data contain two strings A and B. There may be space in both A and B.

Output 

string A after delete characters, and each output is split by "\n"

if string A is null after delete, you just need to print "\n"

Sample Input

3

WE are family

aeiou

qwert

asdfg

hello world

e l

Sample Output

WE r fmly

qwert

howrd

Hint:

the string contains space, so you may need to use fgets() to input a string.

Capital letter and small letter cannot be ignored.

代码

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main() {
 4     int n, j, i;
 5     scanf("%d", &n);
 6     getchar();
 7     while (n--) {
 8         char ch[50] = "0", result[50] = "0", ch1[50] = "0";
 9         char t;
10         fgets(ch, 50, stdin);
11         int k = strlen(ch);
12         fgets(ch1, 50, stdin);
13         int k2 = strlen(ch1);
14         int tot = 0;
15         for (i = 0; i < k + 1; i++) {
16             int b = 0;
17             for (j = 0; j < k2 + 1; j++) {
18                 if (ch1[j] == ch[i]) {
19                     b = 1;
20                 }
21             }
22             if (b == 0) {
23                 result[++tot] = ch[i];
24             }
25         }
26         for (i = 1; i <= tot; i++) {
27             printf("%c", result[i]);
28         }
29         printf("\n");
30     }
31 }

标答

1.#include<stdio.h>
2.#include<string.h>
3.
4.#define NUMBER 256
5.
6.void Delete(char *first, char *second) {
7.        int i;
8.        int hashtable[NUMBER];
9.        for (i = 0; i < NUMBER; i++)
10.                hashtable[i]=0;
11.
12.        char *p = second;
13.        while (*p) {
14.                hashtable[*p]=1;
15.                p++;
16.        }
17.
18.        char *slow = first;
19.        char *fast = first;
20.        while (*fast) {
21.                if (hashtable[*fast] == 0) {
22.                        *slow=*fast;
23.                        slow++;
24.                }
25.                fast++;
26.        }
27.        *slow=‘\0‘;
28.}
29.
30.int main() {
31.        int num;
32.        char temp[50];
33.        scanf("%d", &num);
34.        fgets(temp, 50, stdin);
35.        while (num--) {
36.                char first[50];
37.                char second[50];
38.                fgets(first, 50, stdin);
39.                fgets(second, 50, stdin);
40.                if (first == NULL) {
41.                        printf("\n");
42.                        continue;
43.                }
44.                Delete(first, second);
45.                printf("%s\n", first);
46.        }
47.        return 0;
48.}
时间: 2024-11-05 16:25:30

(eden)Delete character的相关文章

vim编辑器提高篇

动词 动词代表了我们打算对文本进行什么样的操作.例如: d 表示删除 deleter 表示替换 replacec 表示修改 changey 表示复制 yankv 表示选取 visual select 名词 名词代表了我们即将处理的文本.Vim 中有一个专门的术语叫做文本对象,下面是一些文本对象的示例: w 表示一个单词 words 表示一个句子 sentencep 表示一个段落 paragraght 表示一个 HTML 标签 tag引号或者各种括号所包含的文本称作一个文本块. 介词 介词界定了待

K-近邻算法python实现

内容主要来源于机器学习实战这本书,加上自己的理解. 1.KNN算法的简单描述 K最近邻(k-Nearest Neighbor,KNN)分类算法可以说是最简单的机器学习算法了.它采用测量不同特征值之间的距离方法进行分类.它的思想很简单:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.下图是大家引用的一个最经典示例图. 比如上面这个图,我们有两类数据,分别是蓝色方块和红色三角形,他们分布在一个上图的二维中间中.那么假如我们有一个绿色圆

一起来说 Vim 语

作为一款古老而具有持久生命力的编辑器,Vim 自有它的强大之处.很多人觉得 Vim 的学习曲线太陡峭了,为了能够把 Vim 用得风生水起,不得不记忆大量的命令.如果你是 Vim 新手,刚入门就开始面对着浩如烟海的命令逐条学习,我相信你一定会逐渐失去对它的兴趣.其实,Vim 以一种近乎自然语言的方式帮助你完成文本的编辑工作.只需要熟悉几条简单的语法,你就会坐在旋转座椅上前后打转,感慨美妙的生活又回来了. 我们假设你已经了解了 Vim 的几种常用的工作模式(正常模式.插入模式.命令模式等),如果你还

0219自学Linux_bash特性+命令学习(cut,sort,uniq,wc,tr,histroy,alias)+通配符glob

09 GPL,BSD,Apache三个开源协定的大体联系及其区别 1.自由软件,版权描述:但是照样是有版权的 2.开源协定,版权描述 www.kernel.org内核版本的版本号查看网址,也是官网 查看最新kernel的最新版本,www.kernel.org习惯了解 列出linux发行版和linux内核的关系 Lniux发行版,GUN:GUN/Linux. 源代码:必须要编译才可以运行,所以发行版是已经将源代码已经编译完成的东西,组合在一起,就形成了发行版,主流的三大发行版:Fedora:它为r

Linux -- top (man)

TOP(1)                                                             User Commands                                                             TOP(1) NAME       top - display Linux processes SYNOPSIS       top -hv|-bcHiOSs -d secs -n max -u|U user -p p

Bash Shortcuts For Maximum Productivity

http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/ Bash Shortcuts For Maximum Productivity September 15, 2009 By Alan Skorkin 71 Comments MaximumIt may or may not surprise you to know that the bash shell has a very rich array of c

altium designer 快捷键

2010年03月27日 环境快捷键 F1 访问文档库 (in context with object under cursor) Ctrl + O 访问选择的文档打开对话框 Ctrl + F4 关闭活动的文档 Ctrl + S 保存当前的文档 Ctrl + P 打印当前的文档 Alt + F4 关闭 Altium Designer Ctrl + Tab 切换打开的文档 (右手习惯) Shift + Ctrl + Tab 切换打开的文档 (左手习惯) 从Windows资源管理器打开文档作为自由文档

Easy Problem

D. Easy Problem time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Vasya is preparing a contest, and now he has written a statement for an easy problem. The statement is a string of length nn

Linux command line shortcut

It may or may not surprise you to know that the bash shell has a very rich array of convenient shortcuts that can make your life, working with the command line, a whole lot easier. This ability to edit the command line using shortcuts is provided by