c++ - 范围内出现次数最多的字符

标签 c++ character complexity-theory frequency mode

我有一个长度为 n 的字符串 s。用于查找范围 i..j 中最频繁出现的字符的最有效数据结构/算法是什么?

字符串不会随时间改变,我只需要重复查询,要求在 s[i]s[i + 1] 中出现最频繁的字符>, ... , s[j].

最佳答案

一个数组,您可以在其中保存每个字符出现的次数。您在遍历字符串一次时增加相应的值。这样做时,您可以记住数组中的当前最大值;或者,在末尾查找数组中的最大值。

伪代码

arr = [0]
for ( char in string )
   arr[char]++
mostFrequent = highest(arr)

关于c++ - 范围内出现次数最多的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14502939/

相关文章:

使用指针检查字符数组中的数字,在 c 中给出错误,给出运行时错误

computer-science - NP问题为什么这样称呼(以及NP难题和NP难题)?

arrays - APL 中的 3+ 维真值表

c++ - QOpenGLVertexArrayObject 的使用

java - Java如何生成以字母开头的随机字符串

c++ - 错误LNK2001 : unresolved external symbol "public: static class sf::RenderStates const sf::RenderStates::Default"

string - 反转用户在汇编语言中给出的字符串

sql - 有效地搜索匹配给定属性/属性集及其值的记录(完全匹配、小于、大于)

php - PHP 的 hash_hmac 函数的 C++ 等价物是什么?

c++ - 当我无法立即处理数据时,如何避免内存泄漏