code up 字符串的查找删除 c++

问题 C: 字符串的查找删除

时间限制 : 1.000 sec  内存限制 : 32 MB

题目描述

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

输入

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

输出

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

样例输入 Copy

in
#include 
int main()
{

printf(" Hi ");
}

样例输出 Copy

#clude
tma()
{

prtf("Hi");
}

提示

1.将字符串中的In、IN、iN、in删除,所以要进行大小写匹配判断

2.要跳过空格

3.要循环接收删除指定字符串的字符串

 

solution

#include <cstdio>
#include <cstring>
int main()
{
    char a[200],b[200];
    gets(a);
    int len1=strlen(a);
    while(gets(b)!=NULL)
    {
        int len2=strlen(b);
        for(int i=0;i<len2;i++)
        {
            if(b[i]==' ')//是空格就跳过
                continue;
            if(b[i]==a[0]||b[i]==a[0]+32||b[i]==a[0]-32) //大小写似做等同
            {
                i++;
                int j=1;
                while(j<len1&&i<len2&&(b[i]==a[j]||b[i]==a[j]+32||b[i]==a[j]-32))
                {
                    i++;j++;
                }

                if(j==len1) //匹配,则不回退打印输出
                {
                    i--; //一定要加上i--,因为i到了下一个要判断的位置,但是直接continue进入下一轮循环会i+1,所以i要先减1
                    continue;
                }
                else//不匹配,则回退
                {
                    i=i-j;  //回退到a[0]=b[i]时的位置
                    printf("%c",b[i]); //打印b[i],再进入下一轮判断
                    j=0;
                }
            }
            else
            printf("%c",b[i]);
        }
        printf("\n");
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值