题目描述:
7-7 删除字符串中的子串(15 分)
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Tomcat is a male ccatat
cat
输出样例:
Tom is a male
赛后分析:字符串模拟,但是比赛的时候并没有做出来,对于字符串题目的掌握还是不够好,赛后看了看题解,在比赛的时候想到用string中的substr来做了,但是忘记这个函数的用法了,C语言库函数里面也有许多可以用的函数,但是大一C语言学的并不好,出来混,总是要还的...
题目分析:
substr(i, x)从字符串的第 i 号下标开始,向后面截取 x 位,并且可以赋值给一个新的字符串
erase(i, x) 从下标i 开始,向后删除 x 位
AcCode:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char str1[100];
char str2[100];
gets(str1);
gets(str2);
int len1 = strlen(str1);
int len2 = strlen(str2);
string s1, s2;
for(int i = 0; i < len1; i++) s1 += str1[i];
for(int i = 0; i < len2; i++) s2 += str2[i];
while(1){
bool flag = false;
for(int i = 0; i < s1.size(); i++){
string s = s1.substr(i, s2.size());
if(s == s2) {flag = true; s1.erase(i, s2.size());}
}
if(!flag) break;
}
cout << s1 << endl;
return 0;
}