第十五周 OJ总结<13>--字符串比较



Copyright (c) 2016,
烟台大学计算机与控制学院 All ringts reserved.
文件名称:OJ总结<13>--包含B的字符串
作 者:王兴振
完成日期:2016年12月13日
版 本 号:未知
题目描述:
  一个字符串s、一个字符串t,判断t是否是s的子串,若是则将s中所有出现了t串的地方换成指定的字符或字符串p,若不是,则输出NO  

输     入:

   一个字符串s、一个字符串t,要换的字符或字符串

输      出:

  输出修改后的s串

样例输入:
  asdfasdf

  132

   saf

样例输出:

NO

答       案:

#include <stdio.h>
#include <string.h>
 
int main()
{
    int i=0,j,p=0,u=0,o,g,x,d;
    char a[80],b[80],c[80];
    gets(a);
    gets(b);
    gets(c);
    while(a[i]!='\0')
    {
        x=1;
        o=i;
        for(j=0;j<strlen(b);j++)
        {
            if(a[i]==b[j])
            p++;
           i++;
        }
        i=o;
        if(p==strlen(b))
        {
            u=1;
            j=0;
            if(strlen(b)==strlen(c))
              for(j=0;j<strlen(b);j++)
            {
                a[i]=c[j];
                i++;
            }
            else if(strlen(b)>strlen(c))
            for(j=0;j<strlen(a);j++)
            {
                if(x)
                for(g=0;g<strlen(c);g++)
                {
                    a[i]=c[g];
                    i++;
                    x=0;
                    j=g;
                }
                a[i]=a[i+strlen(b)-strlen(c)];
                i++;
            }
            else if(strlen(b)<strlen(c))
            for(j=0;j<strlen(c);j++)
            {
                d=strlen(c)-strlen(b);
                if(x)
                for(g=strlen(a);g>i+d;g--)
                {
                    a[g+1]=a[g];
                    x=0;
                }
                a[i]=c[j];
                i++;
            }
        }       
        p=0;
        i=o;
        i++;
    }
    if(u)
    printf("%s", a);
    else
    printf("NO\n");
    return 0;
}


总     结:

  这个题好难,磨了好久出来的,笨办法,对每个字符进行判断,先判断是不是子字符串,再分三种情况,就是被替换字符串和替换字符串长度大小关系,

再对每一种情况替换就行了。


猜你喜欢

转载自blog.csdn.net/wxz1814/article/details/53611564