gpt4 book ai didi

c++ - 计算一个字符串的每个字符在另一个字符串中的出现次数

转载 作者:行者123 更新时间:2023-11-30 04:49:18 43 4
gpt4 key购买 nike

我正在尝试编写一个函数,它将两个字符串作为参数并返回第二个字符串的每个字符在第一个字符串中出现的总次数。

例如,i = count("abracadabra", "bax"); 将返回 7

我希望利用 STL。我已经编写了以下函数来计算一个字符在字符串中出现的次数,但是在循环中调用此函数来解决上述问题似乎效率很低。

int count(const std::string& str, char c)
{
int count = 0;
size_t pos = str.find_first_of(c);
while (pos != std::string::npos)
{
count++;
pos = str.find_first_of(c, pos + 1);
}
return count;
}

最佳答案

您可以修改 count 函数以接受 std::string 作为第二个参数,然后一次循环一个字符并使用 std::count计算每个字符出现的次数并增加总计数

#include <iostream>       // std::cout
#include <string> // std::string
#include <algorithm> // std::count

int count(const std::string& search, const std::string& pattern)
{
int total = 0;
for(auto &ch : pattern) {
total += std::count(search.begin(), search.end(), ch);
}

return total ;
}

int main ()
{
std::string hay("abracadabra");
std::string needle("bax");

std::cout << count(hay, needle) << std::endl;
return 0;
}

关于c++ - 计算一个字符串的每个字符在另一个字符串中的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55466722/

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