首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算一个字符串中一个字符在多次查询中出现的次数?

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

Stack Overflow用户
提问于 2017-03-03 22:30:50
回答 2查看 986关注 0票数 0

我想在n个查询中查找字符串中某个字符的匹配项:例如,该字符串是:"i_love_mathematics“,任务是查找以下项的匹配项:

范围内的'i‘:

代码语言:javascript
复制
          1-4(a substring starting from 1st character and ending at 4th)
          2-5
          3-10

范围内的'_‘:

代码语言:javascript
复制
           1-10
           3-9

输出将为:

代码语言:javascript
复制
           1
           0
           0
           2
           1

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-03 22:49:09

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

代码语言:javascript
复制
    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

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

字母'a‘在3-5范围内

我们在位置5减去位置3之前的出现次数,即a5-a3-1=3-1=2在3到5的范围内有2个字母'a‘出现

票数 2
EN

Stack Overflow用户

发布于 2017-03-04 00:23:49

搜索每个查询的范围的时间复杂度为O(n*q)

n:字符串长度

问: no.of查询

但是有一种更好的方法,你可以使用segment trees

树构造的时间复杂度为O(N),每次查询的时间复杂度为O(log(n))

因此,对于q个查询,时间复杂度将为O(q*log(n))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42581499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档