|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <bits/stdc++.h>
- using namespace std;
- int main()
- {
- string word, s;
- int pos = 0;
- int cnt = 0;
- getline(cin, word);
- getline(cin, s);
- s = ' ' + s + ' ';
- word = ' ' + word + ' ';
- for (int i = 0; i < s.size(); i++)
- s[i] = tolower(s[i]);
- for (int i = 0; i < word.size(); i++)
- word[i] = tolower(word[i]);
- while (s.find(word, pos) != -1)
- {
- pos = s.find(word, pos) + word.length() - 1;
- cnt++;
- }
- if (cnt == 0)
- cout << "-1";
- else
- cout << cnt << " " << s.find(word) << endl;
- }
复制代码
代码逻辑是什么样子的呢
这段代码的主要目标是在一个给定的字符串(s)中查找另一个字符串(word)的出现次数和第一次出现的位置。这是它的工作方式:
1. 首先,它从用户那里获取两个字符串,一个是要查找的字符串(word),另一个是要在其中查找的字符串(s)。
2. 然后,它在这两个字符串的开始和结束处添加空格。这是为了确保在查找单词时,只有当单词在句子中独立存在时才会被找到,而不是作为其他单词的一部分。
3. 接下来,它将这两个字符串转换为小写。这是为了确保查找不受大小写的影响。
4. 然后,它使用一个循环来查找字符串s中字符串word的出现。每次找到一个匹配,它就更新搜索的起始位置,并增加计数器(cnt)。
5. 如果没有找到任何匹配,它会输出\"-1\"。否则,它会输出匹配的数量(cnt)和第一次匹配的位置。注意,这里的位置是从0开始的,也就是说,如果word是s的第一个单词,那么它的位置将是0。
这就是这段代码的逻辑。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
|
|