编程实现:统计文章中特定单词出现次数与首次位置,附代码详解
```cpp #include <iostream> #include <string> #include <cctype> // 转换为小写字母 void toLowerCase(std::string &str) { for (char &c : str) { c = std::tolower(c); } } int main() { std::string target; std::string article; // 读取目标单词 std::cin >> target; // 读取文章 std::cin.ignore(); std::getline(std::cin, article); // 将目标单词和文章都转换为小写 toLowerCase(target); toLowerCase(article); int count = 0; int firstPos = -1; int pos = 0; while (pos < article.length()) { // 跳过前导空格 while (pos < article.length() && article[pos] == ' ') { pos++; } int wordStart = pos; std::string currentWord; // 提取当前单词 while (pos < article.length() && article[pos] != ' ') { currentWord += article[pos]; pos++; } // 检查当前单词是否与目标单词匹配 if (currentWord == target) { count++; if (firstPos == -1) { firstPos = wordStart; } } } if (count > 0) { std::cout << count << " " << firstPos << std::endl; } else { std::cout << -1 << std::endl; } return 0; } ``` 代码解释: 1. `toLowerCase` 函数:将字符串中的所有字母转换为小写,以便在不区分大小写的情况下进行匹配。 2. 主函数 `main`: - 读取目标单词和文章。 - 将目标单词和文章都转换为小写。 - 初始化计数器 `count` 和首次出现位置 `firstPos` 为 -1。 - 遍历文章,跳过前导空格,提取当前单词。 - 检查当前单词是否与目标单词匹配,如果匹配则增加计数器,并记录首次出现位置。 3. 输出结果:如果找到目标单词,则输出出现次数和首次出现位置;否则输出 -1。 复杂度分析: - 时间复杂度:$O(n)$,其中 $n$ 是文章的长度。 - 空间复杂度:$O(m)$,其中 $m$ 是目标单词的长度。 ######[AI问答 | 590点数解答 | 2025-12-15 16:21:39]
- 数轴旅行:从原点出发,能否到达目标位置?(字节豆包 | 225点数解答 | 2026-01-23 19:51:03)48
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)349
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)231
- Python代码实现:绘制洁白无瑕水晶玫瑰,附示例代码与注意事项(字节豆包 | 447点数解答 | 2025-11-02 14:37:54)69
- Python 与 C 语言:一行字符串中单词个数统计的实现与解析(字节豆包 | 658点数解答 | 2025-12-07 17:39:44)38
- Python 实现输入字符串统计单词个数,轻松解决连续空格难题!(DeepSeek | 141点数解答 | 2025-12-14 20:12:06)49
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)319
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)468
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)359
- Python 编程:开启无限可能的编程之旅!(阿里通义 | 19点数解答 | 2023-12-07 16:15:34)336
- C++实现单门课程成绩管理系统:教师学生双身份操作全解析(GPT | 6361点数解答 | 2024-05-24 02:01:02)542
- 边长为3、4、5的三角形面积求解:用海伦公式算出结果为6! (字节豆包 | 155点数解答 | 2024-10-15 16:41:01)398