栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

7-4 单词个数 (10 分)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

7-4 单词个数 (10 分)

文章目录

题目

代码讲解

(2)代码

题目

小明想要统计一个单词在文章中出现的次数,并输出第一次重现的为,统计时不区分大小写

输入格式:
第1行为一个字符串,其中只含字母,表示给定单词;

第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。 1≤第一行单词长度≤10。

1≤文章长度≤2000。

输出格式:
在一行中输出两个整数,分别是单词出现的次数和第一次出现的位置(单词首字母在文章中的位置,位置从0 开始);如果单词没有出现,则直接输出一个整数-1。

输入样例:
在这里给出一组输入。例如:

To
to be or not to be is a question
输出样例:
在这里给出相应的输出。例如:

2 0

代码讲解

(1)
C++中substr()函数用法详解
substr()是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。——摘自百科词条
语法
substr(size_type _Off = 0,size_type _Count = npos)
一种构造string的方法
形式 : s.substr(pos, len)
返回值: string,包含s中从pos开始的len个字符的拷贝(pos的默认值是0,len的默认值是s.size() - pos,即不加参数会默认拷贝整个s)

(2)

题目不区分大小写,那就大写字母全部转为小写字母。
然后进行遍历,单词的前面除了第一个,其余的前面应该是空格,单词的后面除了最后一个,其余都是空格。
还有就是第一个单词记住位置。

代码
#include
using namespace std;
string s,w;
int first,n;
int main()
{
	getline(cin,w);
	getline(cin,s);
	for(int i=0;i='A'&&w[i]<='Z')
		w[i]+=32;//大写变小写 
	}
	for(int i=0;i='A'&&s[i]<='Z')
		s[i]+=32;//大写变小写 
	} 
	for(int i=0;i<=s.size()-w.size();i++)
	{
	if(s.substr(i,w.size())==w&&(s[i-1]==' '||i==0)&&(s[i+w.size()]==' '||i+w.size()==s.size()))
	{
		if(n==0) first=i;
		n++;
	}	
	}
	if(n==0) cout<<-1;
	else cout<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767844.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号