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

来源:互联网 发布:单片机电子琴c程序 编辑:程序博客网 时间:2024/04/27 08:48


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;}


总     结:

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

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


1 0
原创粉丝点击