码迷,mamicode.com
首页 > 其他好文 > 详细

删除子串,只要是原串中有相同的子串就删掉所有子串。子串至少两个字符。

时间:2014-07-12 08:55:53      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   for   io   div   

//删除子串,只要是原串中有相同的子串就删掉所有子串。子串至少两个字符。

#include<stdio.h>
#include<string.h>

char* delete_string(char s[],char a[]);

int main()
{
    char s[255];
    char data[255][255];//存放相同的子串
    int i,j,k;
    int length;
    int row = 0,column;//data[][]的行标和列标

    gets(s);
    length = strlen(s);

    //寻找相同的子串
    for(i=0;i<length-3;i++)
    {
        for(j=i+1;j<length-1;)
        {
            if((s[i] == s[j]) && (s[i+1] == s[j+1]))
            {
                column = 0;
                k = 0;
                do
                {
                    data[row][column++] = s[j];
                    j++;k++;
                }while(s[i+k] == s[j]);

                data[row++][column] = \0;
            }
            else
            {
                j++;
            }
        }
    }

    puts("The same string:");
    for(i=0;i<row;i++)
    {
        puts(data[i]);//输出相同的子串
    }

    for(i=0;i<row;i++)
    {
        delete_string(s,data[i]);
    }
    puts("After deleted:");
    puts(s);
    return 0;
}


//函数功能:如果字符串s中包含子串a,则将s中的a删除。否则不做任何改变。
char* delete_string(char s[],char a[])
{
    int length_s;
    int length_a;
    int i,j,k;
    
    length_s = strlen(s);
    length_a = strlen(a);

    for(i=0;i<length_s;)
    {
        j = 0;
        if(s[i] == a[j])
        {    
            do
            {
                i++;j++;
            }while((j < length_a) && (s[i] == a[j]));

            if(j == length_a)
            {
                //表明s中包含子串a,将其删除。
                for(k=i;k<=length_s;k++)
                {
                    s[k-length_a] = s[k];
                }

                i = i - length_a;
                j = 0;
            }
            else
            {
                j = 0;
            }
        }
        else
        {
            i++;
        }
    }
    return s;
}

删除子串,只要是原串中有相同的子串就删掉所有子串。子串至少两个字符。,布布扣,bubuko.com

删除子串,只要是原串中有相同的子串就删掉所有子串。子串至少两个字符。

标签:style   blog   color   for   io   div   

原文地址:http://www.cnblogs.com/Camilo/p/3835188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!