【编程小练习】删除字符串中的子串
2015-04-01 22:56
363 查看
题目内容:
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
提示:输入数据的设计使得不可能出现输出为空的情况。
输入格式:
输入分别给出2个每个不超过80个字符长度的不带空格的非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Thisisatest is
输出样例:
Thatest
思路:把输入字符串中第一次出现与子串相匹配的字符串删除,然后再次判断删除后的字符串中,是否存在与子串相同的字符串,如有相同,再次删除,直到没有相同的为止。
程序中s1为bbcbbccc,s2为bc,第一次删除为bbbccc,第二次为bbcc,第三次为bc,最后输出为NULL。
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
提示:输入数据的设计使得不可能出现输出为空的情况。
输入格式:
输入分别给出2个每个不超过80个字符长度的不带空格的非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Thisisatest is
输出样例:
Thatest
思路:把输入字符串中第一次出现与子串相匹配的字符串删除,然后再次判断删除后的字符串中,是否存在与子串相同的字符串,如有相同,再次删除,直到没有相同的为止。
#include "stdio.h" #include "stdlib.h" #include "string.h" char * del(char *p1,char *sp1,char s2[],char result[]); int main() { char s1[80]={"bbcbbccc"},s2[80]={"bc"}; //char s1[80]={"Thisisatest"},s2[80]={"is"}; /*char s1[80],s2[80]; printf("输入字符串s1,长度不超过80:"); scanf("%s",s1); printf("输入字符串s2,长度不超过80:"); scanf("%s",s2);*/ char *p1,result[80]={'\0'},*sp1; p1=s1; sp1=s1; for (int i=0;i<sizeof(s1);i++) result[i]=s1[i]; char temp[sizeof(result)]; while (strstr(result,s2)!=NULL) { for (int i=0;i<sizeof(result);i++) temp[i]=result[i]; result[0]='\0'; del(temp,temp,s2,result); } if (result[0]=='\0') printf("NULL"); else printf("%s",result); return 0; } char * del(char *p1,char *sp1,char s2[],char result[]) { while((p1=strstr(sp1,s2))!=NULL) { char c=*p1; *p1='\0'; strcat(result,sp1); *p1=c; for (int i=0;i<strlen(s2);i++) p1++; sp1=p1; } strcat(result,sp1); return result; }
程序中s1为bbcbbccc,s2为bc,第一次删除为bbbccc,第二次为bbcc,第三次为bc,最后输出为NULL。
相关文章推荐
- c语言练习 10-2. 删除字符串中的子串(20)
- 编程练习,寻找字符串中的子串
- 编程实现删除字符串中所有给定的子串
- 删除字符串中所子串【编程】
- 字符串练习——删除子串的n中方法
- 【C编程练习】华为2013校园招聘机试题目题4:删除一个字符串中出现次数最少的字符,函数原型为:char * delChar(char *s,int iLen)
- PTA 基础编程题 5-29 删除字符串中的子串 (20分)
- 【C编程练习】2013华为校园招聘机试题目题5:将一个int类型的数字转化为字符串,并判断有无重复字符串(长度应大于2)有返回1,无返回2
- 华为机试 删除字符串中所有给定的子串
- 从字符串中删除出现的子串
- 从一个字符串中删除一个子串后返回该字符串和包含的子串的个数
- 华为机试 删除字符串中所有给定的子串
- 第8章_字符串与文本I/O_编程练习_8.1判断是否为回文串
- 删除字符串中的子串
- 程序员编程艺术第二十八~二十九章:最大连续乘积子串、字符串编辑距离
- 从一个字符串中删除其包含的某个(第一个)子串
- 字符串编程,将字符串S中出现的子串T1用字符串T2替代。
- 字符串编程练习
- 删除字符串中的子串
- 程序员编程艺术第二十八~二十九章:最大连续乘积子串、字符串编辑距离