本題要求你計算A-B。不過麻煩的是,A和B都是字符串 —— 即從字符串A中把字符串B所包含的字符全刪掉,剩下的字符組成的就是字符串A-B。
輸入格式:
輸入在2行中先后給出字符串A和B。兩字符串的長度都不超過104,並且保證每個字符串都是由可見的ASCII碼和空白字符組成,最后以換行符結束。
輸出格式:
在一行中打印出A-B的結果字符串。
輸入樣例:輸出樣例:
解題思路:本題是要借助ASCII的編碼來建立一個大小為128的數組,對B字符串來進行存儲,第i個字符若為a,則將c的數組下標為a的ASCII值的數置位1,這個算法大大降低了時間復雜度。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char a[10001];
char b[10001];
int c[128];
int i;
gets(a);
gets(b);
for(i = 0; i < 128; i++)
{
c[i] = 0;
}
for(i = 0; i < strlen(b); i++)
{
c[(int)b[i]] = 1;
}
for(i = 0; i < strlen(a); i++)
{
if((c[(int)a[i]]) == 0)
printf("%c", a[i]);
}
printf("\n");
return 0;
}
算法復雜度O(n).