CUMTOJ数据结构实验内容1-2 problemH

2019-06-18  本文已影响0人  Redcarp

1388 problem 字符串的查找删除 C++

题目描述

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

输入

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

输出

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

样例输入

in
#include 
int main()
{

printf(" Hi ");
}

样例输出

#clude
tma()
{

prtf("Hi");
}

提示

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

程序如下

#include <string>
#include <iostream>
using namespace std;
int main()
{
    string a,str;
    getline(cin,a); //输入短字符串
    for(int i = 0; i<a.size(); ++i)
    { //将a中字符串全部改为小写字母
        a[i] = tolower(a[i]);
    }
    while(getline(cin,str))
    {
        string b = str,c = b; //将字符串保存至b,c,b将用于保存小写化后的字符,c保存原字符串
        for(int i = 0; i<b.size(); ++i)
        { //将b中的字符全部改为小写,便于匹配
            b[i] = tolower(b[i]);
        }
        int t = b.find(a,0); //在b串中查找a的位置,返回索引
        while(t != string::npos) //查找成功,则重复循环
        {
            c.erase(t,a.size());
            b.erase(t,a.size());
            t = b.find(a,t); //从t位置为起点继续查找b中下一个出现字符串a的位置
        }
        t = c.find(' ',0);
        while(t != string::npos)
        { //删除c中所有空格
            c.erase(t,1);
            t = c.find(' ',0);
        }
        cout<<c<<endl;
    }
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读