7-7 删除字符串中的子串(15 分) 字符串的应用

题目描述:

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


                                                                                 

猜你喜欢

转载自blog.csdn.net/WSS_ang/article/details/79615142