【发布时间】:2020-12-03 15:05:22
【问题描述】:
这个问题在得到解决方案方面并不难,但我想知道是否有任何 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::map<char, int> counts; for (auto c : the_string) { counts[c]++; }? -
@JesperJuhl 他想避免检查完整的字符串
-
这不是 OP 的问题,他想尽早终止循环以避免在知道后使用 cpu 周期;完成
-
@Makogan Fine;然后检查循环中的计数和
break;是否高于阈值。 -
@novice 您可以轻松检查<algorithm>中的可用内容。