题目1168:字符串的查找删除

Posted 多思考&&多动手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题目1168:字符串的查找删除相关的知识,希望对你有一定的参考价值。

题目1168:字符串的查找删除

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:5092

解决:2097

题目描述:

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

输入:

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

输出:

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

样例输入:
in
#include 
int main()
{

printf(" Hi ");
}
样例输出:
#clude
tma()
{

prtf("Hi");
}
提示:

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

#include<iostream>
#include<stdio.h>
#include<queue>
#include<string>
#include<string.h>
#include<algorithm>
#include<ctype.h>
using namespace std;

int main()
{
    char str[101];
    gets(str);
    string a=str;//将其保存在a中
    for(unsigned int i=0; i<a.size(); i++)
    {
        a[i]=tolower(a[i]);//将a中的字符全部改为小写
    }
    while(gets(str))//输入长字符串
    {
        string b=str,c=b;
        for(unsigned int i=0; i<b.size(); i++)
        {
            b[i]=tolower(b[i]);
        }
        int t=b.find(a,0);//在b中查找a的位置
        while(t!=string::npos)//若查找成功,则重复循环
        {
            c.erase(t,a.size());//删除c中相应位置字符,c为原串
            b.erase(t,a.size());
            t=b.find(a,t);//继续查找b中下一个出现字符串a的位置
        }
        t=c.find( ,0);
        while(t!=string::npos)
        {
            c.erase(t,1);
            t=c.find( ,0);
        }//删除c中所有的空格
        cout<<c<<endl;
    }
    return 0;
}

 

以上是关于题目1168:字符串的查找删除的主要内容,如果未能解决你的问题,请参考以下文章

POWEROJ 1168-A F(x)(找规律&二分查找)

P1168 中位数

一本通1168 高精度加法

[Luogu 1168] 中位数

[洛谷P1168]中位数

1168 火柴棒等式