string - 为多个查询计算一个字符在字符串中出现的次数?

标签 string algorithm data-structures range-query string-algorithm

我想为 n 个查询查找字符串中某个字符的出现次数: 例如字符串是:“i_love_mathematics” 任务是找到:

'i' 在范围内:

          1-4(a substring starting from 1st character and ending at 4th)
          2-5
          3-10

范围内的“_”:

           1-10
           3-9

输出将是:

           1
           0
           0
           2
           1

类似的问题是找出一个字符在字符串中出现的次数,但复杂度为 O(N) 但在这种情况下,如果我这样做会导致非常高的复杂度,是否有数据可以用来解决这个问题的结构?

最佳答案

我们将保留每个字符在每个位置出现的次数,例如字符串 abacaba

    a b a c a b a
|  |1|2|3|4|5|6|7
a | 1 1 2 2 3 3 4
b | 0 1 1 1 1 2 2
c | 0 0 0 1 1 1 1

现在,如果我们想回答一个查询,我们执行以下操作

3-5 范围内的字母“a”

我们在位置5减去位置3之前的出现次数做a,即a[5]-a[3-1]=3-1=2 字母'a'在3到范围内出现了2次5

关于string - 为多个查询计算一个字符在字符串中出现的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581499/

相关文章:

windows - 如何以跨平台友好的方式处理 C/C++ 中的 Unicode 字符串?

python - 错误列表索引必须是整数或切片,而不是 str

java - 删除字符串中 "<"和 ">"之间的任何内容

c - 通过引用错误传递结构(不完整的结构和重新声明)

ios - 如何快速从字符串中删除字符

python - Python 中的 Inteviewstreet 中位数。除了第一个测试用例之外的所有测试都失败

c++ - 改进点集的最小距离过滤器

algorithm - 您将如何对 2MB RAM 中的 100 万个 32 位整数进行排序?

c++ - 哪种数据结构最适合这个?

algorithm - 将 B 个芝士蛋糕分给 N 个类(class),以尽量减少每个蛋糕的最大学生人数