一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同 (参见样例 1) ,如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例 2) 。
说实话,字符串是我的弱坑,这次题意还十分有歧义,他说的第一次位置,是每个字符数出来的位置,而不是每个单词数出来的位置。真心坑。
#include<iostream> #include<string> #include<cstdio> using namespace std; void fun(string &num) { int len = num.length(), kk = 'a' - 'A'; for (int i = 0; i < len;++i) if (!(num[i]<='Z'&&num[i]>='A'||num[i]>='a'&&num[i]<='z'))continue; else if (num[i] <= 'Z')num[i] += kk; } int main() { string res,cns; int len; (cin >> res).get(); fun(res); getline(cin, cns); fun(cns); len = cns.length(); int first, count=0, k=0; for (int i = 0; i < len;) { string word = ""; while (i < len&&cns[i] != ' '){ word += cns[i]; ++i; } if (i >= len)break; if (res == word) { if (count==0){ first = i-res.length();} count++; } ++k; while (i<len&&cns[i] == ' ')++i; } if (!count)printf("-1 "); else printf("%d %d ", count, first); }