欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

P1308统计单词数(NOIP2011)-C++编程解析-字符串

程序员文章站 2022-04-30 22:09:26
...

P1308统计单词数(NOIP2011)-C++编程解析-字符串
P1308统计单词数(NOIP2011)-C++编程解析-字符串
解题思路:
该题简单,但是细节处理较多。根据题目所述,匹配时不区分大小写,所以,我们先将要查询的单词和文章全部转换成统一的大写或小写,然后,我们获取文章中的每一个单词和要查找的单词进行匹配,如果,匹配成功,我们找到了第一次出现的下标。同时,也找到了一个匹配的单词。继续往后匹配,直到查找完整篇文章。如果,匹配成功的单词数为0,那么,最终的结果输出-1即可。否则,输出我们查找到的第一次下标和匹配成功的单词个数。

参考程序:

#include<iostream>
using namespace std;
int main(){	
	bool firstFlag = false;      //第一次出现标识 
	int count = 0;               //个数 
	int subScript;               //第一次出现下标 
	string article,word;       
	cin>>word;
	cin.ignore();                //清空缓冲区 
	getline(cin,article);
	//将所有字母转化为小写 
	for(int i = 0;i < word.length();i++){
		if(word[i] >= 'A' && word[i] <= 'Z'){
			word[i] += 32;
		}
	}
	for(int i = 0;i < article.length();i++){
		if(article[i] >= 'A' && article[i] <= 'Z'){
			article[i] += 32;
		}
	}
	//查找 
	int i = 0;
	while(i < article.length()){
		string getWord="";
		while(article[i] != ' '&&article[i] != '\0'){
			getWord += article[i++];	
		}
		if(getWord == word){
			count++;
			if(count == 1){
				subScript = i - word.length();
			}
		}
		while(article[i] == ' ')
			i++;
	}
	//输出 
	if(count <= 0)
		cout<<-1;
	else
		cout<<count<<" "<<subScript;
	return 0;
}

程序结果:
P1308统计单词数(NOIP2011)-C++编程解析-字符串
猿博士课堂是智慧猿少儿编程课堂打造的一个知识性栏目。宗旨在于针对少儿编程学习中遇到的问题答疑解惑,同时提供解题思路,训练计算思维,为成长助力。智慧猿少儿编程课堂一直致力于中国青少年的少儿编程普惠教育,立志做让对信息学编程感兴趣的青少儿学得起、学得懂、学得会的编程课。自上线以来也得到了很多家长学员的支持,为了回馈学员和家长,我们的课程最近开始新一轮促销。敬请关注!
P1308统计单词数(NOIP2011)-C++编程解析-字符串