字符串的查找删除

 

题目描述

给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。

 

 

输入

输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。

 

 

输出

删除输入的短字符串(不区分大小写)并去掉空格,输出。

 

 

样例输入 Copy

in
#include 
int main()
{

printf(" Hi ");
}

 

 

样例输出 Copy

#clude
tma()
{

prtf("Hi");
}

 

 

提示

注:将字符串中的In、IN、iN、in删除。

思路:
题目中删除字符要求不分大小写,则可将先将原字符存储在二维数组,再讲字母全部转化为小写进行比较。

判断逻辑:遍历字符串,某字符与短字符第一个字符相同;在判断下一位字符是否相同,直至完全相同,完全相同则跳过;

#include<bits/stdc++.h>
using namespace std;
int main() {
    string s1;
    cin >> s1;
    for (int i = 0; i < s1.size(); i++) {
        s1[i] = tolower(s1[i]);
    }
    getchar();
    string a, b;
    while(getline(cin, a)) {
        b = a;
        for (int i = 0; i < b.size(); i++) {
            b[i] = tolower(b[i]);
        }
        int t = b.find(s1, 0);
        while (t != string::npos) {
            a.erase(t, s1.size());
            b.erase(t, s1.size());
            t = b.find(s1, 0);
        }
        t = b.find(" ", 0);
        while (t != string::npos) {
            a.erase(t, 1);
            b.erase(t, 1);
            t = b.find(" ", 0);
        }
        cout << a << endl;
    }
    return 0;
}

 

posted @ 2020-09-09 21:06  Euclid·Guisi  阅读(235)  评论(0编辑  收藏  举报