我想知道如何计算一个字符串在 C++ 中的另一个字符串中重复的次数。
我只找到了计算重复次数的方法,但仅限于一个字符。
我想要的是,例如,如果我有一个字符串 p="AJAJDJSDJSDJNBDSJJAJSDKANSDKKSJAJSJSJSDAANSJDANSNADNAS",我想做的是知道有多少个“AJA”,有多少个“JSKA”,有多少个“DANSN " 有……在那个字符串 p 中。
我发现并做过的唯一类似的事情是:
#include <iostream>
#include<string>
#include<string.h>
#include<stdlib.h>
using namespace std;
int main(){
string string1="NLNNCCCL";
string string2="CCCL";
if (string1.find(string2) != std::string::npos) {
std::cout << "se encontró!"<<endl;
}
system("pause");
return 0;
}
但是在那个代码中,我只确保存在类型化模式(string2),而不是它在 string1 中重复的次数
以下代码片段代表另一种查找源字符串中给定子字符串出现次数的方法。如果您想在代码中使用它,我已经单独放置了 count 函数。
您只需添加一个循环,以便只要找到匹配项就会重复搜索:
由于它
std::string.find( )
支持第二个参数来指示从哪个位置开始搜索,我们利用它在找到最后一次出现的位置之后开始每次搜索;因此++idx
.这是一个技巧问题吗?请记住,一条链在另一条链中的重复可能会有细微差别,例如,
"123123"
应该计算多少次重复"123123123"
?一个或两个?如果答案是后者,您可以使用如下函数:
如果答案是第一个,则函数应该从找到的字符串的末尾开始搜索,而不是从开头开始搜索: