前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >问题 C: 字符串的查找删除(字符串好题)

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

作者头像
杨鹏伟
发布2021-06-17 19:39:32
1.7K0
发布2021-06-17 19:39:32
举报
文章被收录于专栏:ypwypw

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

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

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

代码语言:javascript
复制
//样例
//输入
in
#include 
int main()
{

printf(" Hi ");
}

//输出
#clude
tma()
{

prtf("Hi");
}

思路:根据题意,不区分大小写,即有 在主串中删除 in, In ,IN,iN, 。 注意: 1.注意输入,我们可以先读入匹配串,然后一行一行读入主串,然后进行处理。记得在读入完匹配串以后用getchar()吃掉回车键 2.我们思考如何处理,肯定是主串和匹配串中各个英文字符都统计比较好进行对比,比如我们都转化为小写。 但是题目输出要求是非匹配串的字符我们还要将其大小写都原样输出。 所有我们可以复制两个字符串,其中一个s2用于转变大小写然后跟匹配串s1进行匹配删除,另一个字符串s3虽然大小写不做转变,但是s2做什么操作他也做什么操作,如此就删除了s3中的匹配串。 3.对s3进行处理,删除空格。相信大家都会。 4.输出s3.

这里给大家简绍几个函数

代码语言:javascript
复制
tolower();//将字符串中的英文字符转变为小写,如果为非英文字符则不做处理
代码语言:javascript
复制
string s;
s.find(str,pos);//第一个参数为要查找的子串,第二个参数为起始位置。
while(pos!=string::npos)//如此我们可查找主串中所有的子串的起始位置

erase(str,len);//从str中删除长度为len的字符串
代码语言:javascript
复制
#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();
	int pos; 
	string s2,s3;
	string str;
	while(getline(cin,str)){
	//	getchar();
		s3 = s2 = str;
		int len = s2.size();
		for(int i=0;i<len;i++){//对s2处理,删去对应的s3的位置,最后输出s3,因为输出非匹配串的时候大小写不变 
			s2[i] = tolower(s2[i]);
		}
		//删除短字符串 
		pos =  s2.find(s1,0);
		while(pos!=string::npos){
			s2.erase(pos,s1.size());
			s3.erase(pos,s1.size());
			pos = s2.find(s1,pos);//更新新的位置 
		}
		//删除空格
		pos = s3.find(' ',0);
		while(pos!=string::npos) {
			 s3.erase(pos,1);
			 pos = s3.find(' ',pos);
		}
		cout<<s3<<endl;
	}
	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-06-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档