gpt4 book ai didi

c++ - 检查每个字符串中有多少个字符串(简化)

转载 作者:搜寻专家 更新时间:2023-10-31 01:40:07 25 4
gpt4 key购买 nike

所以我需要计算一个字符串在一个字符串中的次数。我之前看到有人发布了一个更复杂的版本,但我的作业要求我不能使用库,必须手动完成。

下面我创建了一个程序,它将在长字符串中找到每个短字符串的开头。

让我们假设

string longword = "bigbigbiggbigbigbiig;
string shortword = "big" ;
for (int i = 0; i < 20;)
{
for(int j = 0; j < 3; j++)
{
if(longword[i]==shortword[j])
{
i++;
}


}
cout << (i-(shortword)+1) << ", ";
}

我的问题是下面的输出有时会连续读取 iii 或 ggg 等单词。你可以看到它的工作原理,直到它到达结束输出它开始于 0,3,6,10,13,15,17 问题是它一直工作到 6 然后它读取 7并把单词的起始位置放错了。

我做错了什么?问题通常是我不能按照指示为此使用高级库和代码。

谢谢!

最佳答案

如果性能不是问题,可以从下面的代码开始

string longword = "bigbigbiggbigbigbiig;
string shortword = "big" ;
for (int i = 0; i < longword.size(); ++i)
{
bool found = true;
for(int j = 0; j < shortword.size(); ++j)
{
if(longword[i + j]!=shortword[j])
{
found = false;
break;
}
}
if (found) cout << i << ", ";
}

如果您关心性能,可以搜索 Knuth–Morris–Pratt 算法或字符串搜索上的类似主题。

关于c++ - 检查每个字符串中有多少个字符串(简化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30204902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com