洛谷:P1308
OJ: I1308
代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | /**************************************************************** * Description: 2011年普及组第2题 统计单词数 * Author: Alex Li * Date: 2024-10-10 13:54:28 * LastEditTime: 2024-10-10 13:59:12 ****************************************************************/ #include <iostream> #include <string> #include <cctype> using namespace std; int main() { string word, article; // 读取要查找的单词 getline(cin, word); // 读取文章 getline(cin, article); // 将要查找的单词转换为小写 for (char &c : word) { c = tolower(c); } int count = 0; // 记录出现次数 int first_pos = -1; // 记录首次出现位置 int pos = 0; // 当前在文章中的位置 int n = article.length(); while (pos < n) { // 跳过空格 while (pos < n && article[pos] == ' ') { pos++; } if (pos >= n) break; int word_start = pos; // 当前单词的起始位置 // 提取当前单词,并转换为小写 string current_word = ""; while (pos < n && article[pos] != ' ') { current_word += tolower(article[pos]); pos++; } // 比较当前单词与要查找的单词 if (current_word == word) { count++; if (first_pos == -1) { first_pos = word_start; } } // 继续处理下一个单词 } if (count > 0) { // 找到了单词,输出出现次数和首次出现位置 cout << count << " " << first_pos << endl; } else { // 未找到单词,输出-1 cout << -1 << endl; } return 0; } |