gpt4 book ai didi

c++ - 检查字符是否在字符串中至少出现 N 次。算法中的任何解决方案?

转载 作者:行者123 更新时间:2023-12-01 14:03:24 24 4
gpt4 key购买 nike

这个问题在获得解决方案方面并不难,但我想知道是否有任何 C++ 函数或算法可以解决它。
我在回答这个问题时想到了这个想法 Count character occurrences in a string in C++
所以想知道除了从头开始编写一个函数来检查字符串中某个字符是否出现特定次数之外,我们是否还有其他选择。
例如让我们说:

std::string s = "a_b_c_d_e_f_g_h_i_j_k_l_m";
我们想找出字符串 中是否至少有 2 个 '_' 。
如果我们使用 std::count 它将返回所有“_”的计数。 std::count_if 也会以类似的方式运行。
我可以编写一个代码来遍历字符串并在计数达到 2 时立即中断,但我想知道我们是否在 C++ 算法或函数中有一些现有的解决方案。
这里的思考过程是,如果我们得到一个很长的字符串作为输入,并且做某事的标准是基于某个特定字符是否至少出现n次,那么遍历整个字符串是一种浪费。

最佳答案

例如,您可以使用 std::find_if 。给你

#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>

int main()
{
std::string s = "a_b_c_d_e_f_g_h_i_j_k_l_m";

std::string::size_type n = 0;

auto it = std::find_if( std::begin( s ), std::end( s ),
[&n]( const auto &c )
{
return c == '_' && ++n == 2;
} );

std::cout << std::distance( std::begin( s ), it ) << '\n';

return 0;
}
程序输出是
3
也就是说,算法在找到第二个字符“_”后立即停止执行。

关于c++ - 检查字符是否在字符串中至少出现 N 次。算法中的任何解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63400689/

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