P1308统计单词数(NOIP2011)-C++编程解析-字符串
程序员文章站
2022-04-30 22:09:26
...
解题思路:
该题简单,但是细节处理较多。根据题目所述,匹配时不区分大小写,所以,我们先将要查询的单词和文章全部转换成统一的大写或小写,然后,我们获取文章中的每一个单词和要查找的单词进行匹配,如果,匹配成功,我们找到了第一次出现的下标。同时,也找到了一个匹配的单词。继续往后匹配,直到查找完整篇文章。如果,匹配成功的单词数为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;
}
程序结果:
猿博士课堂是智慧猿少儿编程课堂打造的一个知识性栏目。宗旨在于针对少儿编程学习中遇到的问题答疑解惑,同时提供解题思路,训练计算思维,为成长助力。智慧猿少儿编程课堂一直致力于中国青少年的少儿编程普惠教育,立志做让对信息学编程感兴趣的青少儿学得起、学得懂、学得会的编程课。自上线以来也得到了很多家长学员的支持,为了回馈学员和家长,我们的课程最近开始新一轮促销。敬请关注!
上一篇: Java 字符串操作
下一篇: Java 字符串操作