问题分析:
题目要求统计给定字符串中某个单词出现的次数以及首次出现的位置。我们可以通过以下步骤来解决这个问题:
1. 将字符串中的所有字母转换为小写,以便进行大小写不敏感的匹配。
2. 使用find函数找到第一个匹配单词的位置,并记录下来。
3. 使用find函数查找下一个匹配单词的位置,直到找不到为止,同时累加匹配次数。
4. 输出匹配次数和首次出现的位置。
代码实现:#include <iostream>#include <string>using namespace std;int main() { string str; getline(cin, str); // 读取输入的一行字符串 string word; cin >> word; // 读取单词 // 将字符串和单词都转换为小写 transform(str.begin(), str.end(), str.begin(), ::tolower); transform(word.begin(), word.end(), word.begin(), ::tolower); int count = 0; // 单词出现次数 int pos = -1; // 单词首次出现的位置 while ((pos = str.find(word, pos + 1)) != string::npos) { if (count == 0) { pos++; // 调整位置索引,从1开始计数 } count++; } cout << count << " " << pos << endl; return 0;}
代码说明:
1. 首先通过getline函数读取一行输入的字符串。
2. 然后使用cin读取要统计的单词。
3. 使用transform函数将字符串和单词都转换为小写。
4. 初始化单词出现次数count为0,首次出现位置pos为-1。
5. 在循环中使用find函数查找下一个匹配单词的位置,并更新pos。
6. 如果是首次匹配,将pos加1调整索引位置。
7. 统计次数count++。
8. 输出最终的次数和位置。
示例输入:
[/code]
This is a test string for testing purposes!
test
[/code]
示例输出:
[/code]
2 11
[/code]
在给定的字符串中,单词"test"出现了两次,第一次出现在位置11。
球一个最佳答案谢谢啦!这对我非常重要! |