鱼C论坛

 找回密码
 立即注册
查看: 1287|回复: 3

[已解决]代码逻辑

[复制链接]
发表于 2023-10-13 12:11:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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;
}
代码逻辑是什么样子的呢
最佳答案
2023-10-13 12:12:12
这段代码的主要目标是在一个给定的字符串(s)中查找另一个字符串(word)的出现次数和第一次出现的位置。这是它的工作方式:

1. 首先,它从用户那里获取两个字符串,一个是要查找的字符串(word),另一个是要在其中查找的字符串(s)。

2. 然后,它在这两个字符串的开始和结束处添加空格。这是为了确保在查找单词时,只有当单词在句子中独立存在时才会被找到,而不是作为其他单词的一部分。

3. 接下来,它将这两个字符串转换为小写。这是为了确保查找不受大小写的影响。

4. 然后,它使用一个循环来查找字符串s中字符串word的出现。每次找到一个匹配,它就更新搜索的起始位置,并增加计数器(cnt)。

5. 如果没有找到任何匹配,它会输出\"-1\"。否则,它会输出匹配的数量(cnt)和第一次匹配的位置。注意,这里的位置是从0开始的,也就是说,如果word是s的第一个单词,那么它的位置将是0。

这就是这段代码的逻辑。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-13 12:11:55 | 显示全部楼层
这段代码的逻辑如下:

1. 引入头文件bits/stdc++.h和命名空间std。

2. 定义string类型的变量word和s,以及int类型的变量pos和cnt。

3. 通过getline函数从标准输入中读入两个字符串word和s。

4. 在字符串s和word的前后都添加空格。

5. 使用for循环将字符串s和word中的所有字符转换为小写字母。

6. 使用while循环查找字符串s中是否包含字符串word,如果包含则记录出现的次数cnt和最后一次出现的位置pos。

7. 如果cnt为0,则输出"-1";否则输出cnt和字符串word在s中第一次出现的位置。

总体来说,这段代码的功能是在字符串s中查找字符串word,并输出它在s中出现的次数和第一次出现的位置。如果没有找到,则输出"-1"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-13 12:12:12 | 显示全部楼层    本楼为最佳答案   
这段代码的主要目标是在一个给定的字符串(s)中查找另一个字符串(word)的出现次数和第一次出现的位置。这是它的工作方式:

1. 首先,它从用户那里获取两个字符串,一个是要查找的字符串(word),另一个是要在其中查找的字符串(s)。

2. 然后,它在这两个字符串的开始和结束处添加空格。这是为了确保在查找单词时,只有当单词在句子中独立存在时才会被找到,而不是作为其他单词的一部分。

3. 接下来,它将这两个字符串转换为小写。这是为了确保查找不受大小写的影响。

4. 然后,它使用一个循环来查找字符串s中字符串word的出现。每次找到一个匹配,它就更新搜索的起始位置,并增加计数器(cnt)。

5. 如果没有找到任何匹配,它会输出\"-1\"。否则,它会输出匹配的数量(cnt)和第一次匹配的位置。注意,这里的位置是从0开始的,也就是说,如果word是s的第一个单词,那么它的位置将是0。

这就是这段代码的逻辑。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-13 12:13:08 | 显示全部楼层
代码逻辑:

1. 首先定义字符串变量words,分别表示要查找的单词和待搜索的字符串。
2. 定义变量pos为0和cnt为0,分别表示搜索的起始位置和单词出现的次数。
3. 使用getline()函数从标准输入读取words
4. 在words字符串前后分别添加一个空格,以便能够正确匹配单词。同时,将sword字符串中的字母全部转换成小写字母。
5. 使用while循环,每次在s字符串中搜索word,如果找到了就将pos更新,并将cnt加1。
6. 如果最终cnt为0,则说明word没有在s中出现过,输出"-1";否则输出cnt和第一次出现的位置。

代码解释:

该代码实现了一个字符串查找的功能,包括以下几个步骤:

1. 读取要查找的单词和待搜索的字符串。
2. 将words字符串前后分别添加一个空格,并将sword字符串中的字母全部转换成小写字母。
3. 在s字符串中搜索word,如果找到了就将pos更新,并将cnt加1。
4. 如果最终cnt为0,则说明word没有在s中出现过,输出"-1";否则输出cnt和第一次出现的位置。

代码中使用了string类型来表示字符串,使用getline()函数从标准输入读取字符串。同时,使用了find()函数在字符串中查找子串,并使用了tolower()函数将字符串中的字母全部转换为小写字母。

建议代码改进:

1. 实现中使用了bits/stdc++.h头文件,这个头文件不是标准头文件,使用起来存在一定的风险,建议使用标准头文件代替。
2. 变量名的命名不够规范,建议采用更有意义的变量名,以提高代码的可读性。
3. 可以在搜索单词之前,先判断一下word的长度是否超过s的长度,如果超过了就不需要搜索了,直接输出"-1"即可。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 19:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表