L1-011. A-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!
 
時間限制
100 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
作者
陳越

解題思路:本題是要借助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).

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM