5-29 删除字符串中的子串 (20分)

来源:互联网 发布:charles mac 编辑:程序博客网 时间:2024/06/06 11:07
#include<iostream>#include<string>using namespace std;int main(){string a(81, '\0'), b(81, '\0');int i;getline(cin, a, '\n');getline(cin, b, '\n');while ((i = a.find(b)) != string::npos)a.replace(i, b.size(), "");cout << a;return 0;}

转自http://www.biggod.top/post/82.html,很不错。

------------------------------分割线----------------------------

#include <stdio.h>char s1[80]={""};char s2[80]={""};int main(){    int i,j;int m=0;//s1共输入m个字符int n=0;//s2共输入n个字符int comp=0;//用于标记是否重复int a,b;int c;for(i=0;;i++){scanf("%c",&s1[i]);if(s1[i]=='\n'){break;}m++;}for(j=0;;j++){scanf("%c",&s2[j]);if(s2[j]=='\n'){break;}n++;}for(a=0;a<m;a++){if(s1[a]==s2[0]){comp=1;}for(b=0;b<=n-1;b++){if(s1[a+b]!=s2[b]){comp=0;}}if(comp==1){m=m-n;for(c=a;c<m;c++){s1[c]=s1[c+n];}a=-1;//此处a=-1而不是0,防止s1数组初始位置开始即与s2重合s1[m]='\0';comp=0;}}for(int i=0;i<m;i++){printf("%c",s1[i]);}}

以上代码也可以测试通过。

0 0
原创粉丝点击