A-B
时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
题目描述
本题要求你计算A-B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A-B。
输入格式:
输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。
输出格式:
在一行中打印出A-B的结果字符串。
输入样例:
I love GPLT! It’s a fun game!
aeiou
输出样例:
I lv GPLT! It’s fn gm!
思路:
- 定义一整形数列a,初始值全为0.
- 将字符数组2‘S2’中的 字符所对应的ascll码序号定位下标,其对应的a[i]值由0变为一,例如字符数组为“A”,”A”在ascll码表中对应的是41,则a[41]=1(原本a[41]=0).
- 将字符数组1“S1”中的 字符所对应的ascll码序号定位下标,其对应的a[i]值是否为1,入为1则说明是S1中的字符,应跳过。如为0,则输出。
代码:
#include<stdio.h>
#include<string.h>
char s1[10001], s2[10001];
int main()
{
int a[300];
memset(a, 0, sizeof(a));//数组a[]初始值赋为0
gets(s1);
gets(s2);
for (int i = 0; i < strlen(s2); i++)//字符数组S2对应a[]值赋为1
{
a[s2[i]] = 1;
}
for (int i = 0; i < strlen(s1); i++)//看字符数组S1对应a[]值为多少
{
if (a[s1[i]] == 1)//为1跳过
{
continue;
}
printf("%c", s1[i]);//不为1,输出
}
printf("\n");
return 0;
}