我的任务是在一个句子(更像是字符行)中找到单词“EYE”,例如:EYEYECARASDFG。如您所见,“EYE”一词出现了两次,彼此重叠。我想对cout单词“EYE”在句子中出现多少次。我写了一些看起来像这样的代码:

#include <iostream>
#include <string>

using namespace std;

string sentence;

int main()
{
    int i = 0;
    cin >> sentence;

    while()
    {
        if (std::string::npos != sentence.find("EYE"))
        {
            i++;
        }
    }


    cout << i;
}

现在没有while循环,它可以在句子中找到EYE并可以正常工作。因此,尽管如此,要计算重叠部分并使代码一直运行到结束时,我需要对其进行循环。所以我虽然while循环是最好的,但是我不知道如何循环它,在while循环中放入什么

最佳答案

首先需要while中的条件。如果要无限循环,请使用true作为语句。作为初稿,请尝试以“蛮力”使之生效。只需检查句子中每3个字母的子串是否等于“EYE”。这将是一个循环和3个条件或2个循环和1个条件。然后阅读一些文本搜索算法,例如KMP

如果只想运行此代码,请使用以下代码:

int pos = 0;
while(true) {
    pos =  sentence.find("EYE", ++pos);
    if (pos != std::string::npos) {
        i++;
    } else break;
 }

关于c++ - C++在句子中查找单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13565907/

10-16 04:51