【发布时间】:2017-03-04 00:23:48
【问题描述】:
我想为 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),但在这种情况下,如果我这样做会导致非常高的复杂度,是否有数据可以用来解决这个问题的结构吗?
【问题讨论】:
-
复杂度为
O(q * n),其中q是查询的数量,n是字符串的长度(如果您进行简单的实现)。或者,您可以使用树将复杂度降低到O(q log n),空间复杂度为O(n)。或者,您可以使用将每个字符映射到某个字符出现的索引列表的表。复杂性将保持不变。
标签: string algorithm data-structures range-query string-algorithm