我有一个长度为 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/