[数据结构PTA]串——删除字符串中的子串
2018-12-18 15:44
295 查看
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Tomcat is a male ccatat
cat
输出样例:
Tom is a male
//一开始delete里的
(loc = search(S1, S2))
忘记加括号了,导致结果错误,要注意。
#include <stdio.h> #define MAXS 100 //找到s中的第一个子串t,并删除 void Delete(char *S1, char*S2) { int loc, i; int len1 = strlen(S1); int len2 = strlen(S2); while((loc = search(S1, S2)) != NULL) { //printf("%d\n%s\n", loc, S1); for(i = loc; i + len2 < len1; ++i) { S1[i] = S1[i + len2]; } S1[i] = '\0'; } } //判断s中是否包含t串,若包含,则返回子串t在s中的首地址,否则返回NULL int search(char *s, char *t) { int len1 = strlen(s); int len2 = strlen(t); int i = 0, j = 0; while (i < len1 && j < len2) { if (s[i] == t[j]) {i++; j++;} else {i = i - j + 2; j = 1;} } if(j >= len2) return i - j; return NULL; } void ReadString( char s[] ) { gets(s); } int main() { char S1[MAXS], S2[MAXS]; ReadString(&S1); ReadString(&S2); Delete(&S1, &S2); printf("%s", S1); }
相关文章推荐
- PTA 基础编程题 5-29 删除字符串中的子串 (20分)
- 一道比较简单的题——PTA基础编程题目集 7-29 删除字符串中的子串 C语言解法
- PTA基础题目5-29删除字符串中的子串
- PTA 7-29 删除字符串中的子串(20 分)strstr函数应用
- [数据结构PTA]串———最长对称子串
- 7-2 删除字符串中的子串(20 分)
- PAT 字符串-02 删除字符串中的子串
- <记录>删除字符串中的子串
- jeapedu 31 字符串切片删除子串
- 删除字符串中的特定子串
- 【C++】删除字符串中的子串
- 10-2. 删除字符串中的子串(20)
- 字符串的一些基本操作,复制,长度,子串查找,单词反转,比较,字符串反转,删除指定字符。
- 【数据结构】 字符串&KMP子串匹配算法
- 5-3 删除字符串中的子串 (20分)
- 字符串删除子串
- 【编程小练习】删除字符串中的子串
- PAT 10-2 删除字符串中的子串
- 7-20 删除字符串中的子串(20 分)
- PAT-java-5-29 删除字符串中的子串 (20分)