我的任务是在一个句子(更像是字符行)中找到单词“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/