chap 4 7-1 刪除字符串中的子串 (20分)

輸入2個字符串S1和S2,要求刪除字符串S1中出現的所有子串S2,即結果字符串中不能包含S2。

輸入格式:

輸入在2行中分別給出不超過80個字符長度的、以回車結束的2個非空字符串,對應S1和S2。

輸出格式:

在一行中輸出刪除字符串S1中出現的所有子串S2後的結果字符串。

輸入樣例:

Tomcat is a male ccatat
cat

輸出樣例:

Tom is a male 
#include <stdio.h>
#include <stdlib.h>
#define SIZECC 100
int Shanchu(char *s,char *t)
{
    int i=0;
    int f=0,m=0;
    while(s[i]!='\0')
    {

        if(s[i]==t[0])//查找到與t[0]相同的元素
        {
            m=i;  //記錄i的位置
            int j=1;
            while(s[i+j]==t[j]&&t[j]!='\0')//繼續匹配
            {
                j++;
            }
            if(t[j]=='\0')
            {
                int k=0;
                f=1;//存在子串且進行了刪除
                while(s[i+j+k]!='\0')//將後面的元素向前移
                {
                    s[i+k]=s[i+j+k];
                    k++;
                }
                s[i+k]='\0';
                i=m;//m的存在是沒有必要的!
            }
        }
        i++;
    }
    if(f==1)//如果進行了刪除,遞歸繼續查找
        Shanchu(s,t);
    else//此時已經遍歷s串,說明不存在t子串
        return 1;
}
int main()
{
    char s[100],t[100];
    gets(s);
    gets(t);
    Shanchu(s,t);
        printf("%s\n",s);
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章