首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >跟踪字符串中特定字符的索引的最有效方法是什么?

跟踪字符串中特定字符的索引的最有效方法是什么?
EN

Stack Overflow用户
提问于 2008-08-30 08:45:45
回答 3查看 364关注 0票数 2

以以下字符串为例:

“敏捷的棕色狐狸”

现在,quick中的q位于字符串的索引4(从0开始),而fox中的f位于索引16。现在假设用户在该字符串中输入了更多文本。

“速度非常快的深褐色狐狸”

现在q在索引9,f在索引26。

无论用户添加多少个字符,跟踪quick中的原始q和fox中的f的索引的最有效方法是什么?

语言对我来说无关紧要,这更多的是一个理论问题,而不是任何东西,所以使用任何你想要的语言,只要尽量保持它一般流行和当前的语言即可。

我给出的示例字符串很短,但我希望有一种方法可以有效地处理任何大小的字符串。因此,使用偏移量更新数组可以使用较短的字符串,但会因为很多字符而停滞不前。

即使在本例中,我在寻找字符串中唯一字符的索引,我也希望能够跟踪同一字符在不同位置的索引,比如brown中的o和fox中的o。所以搜索是不可能的。

我希望答案既节省时间又节省内存,但如果必须选择一个,我更关心性能和速度。

EN

回答 3

Stack Overflow用户

发布于 2008-08-30 08:51:05

您的问题有点模棱两可--您是否希望跟踪每个字母的第一个实例?如果是这样,长度为26的数组可能是最好的选择。

无论何时在低于索引位置的字符串中插入文本,只需根据插入字符串的长度计算偏移量即可。

票数 2
EN

Stack Overflow用户

发布于 2008-08-30 09:25:15

如果你已经有了目标语言,这也会有所帮助,因为并不是所有的数据结构和交互在所有语言中都是同样有效的。

票数 1
EN

Stack Overflow用户

发布于 2008-10-07 01:49:11

在类似的情况下,通常有用的标准技巧是将字符串的字符作为叶保留在平衡二叉树中。此外,树的内部节点应该保留出现在以特定节点为根的子树中的字母集(如果字母表很小且固定,则它们可以是位图)。

在这个结构中插入或删除一个字母只需要O(log(N))操作(更新根路径上的位图),查找第一个出现的字母也需要O(log(N))操作-从根向下,寻找其位图包含感兴趣的字母的最左边的子级。

编辑:内部节点还应该保留所表示的子树中的叶子数量,以便有效地计算字母的索引。

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

https://stackoverflow.com/questions/36122

复制
相关文章
Python字符串中删除特定字符的方法
这篇文章主要介绍了Python字符串中删除特定字符的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 分析
全栈程序员站长
2022/06/28
6.6K0
Python字符串中删除特定字符的方法
在字符串中删除特定的字符
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。 首先我们考虑如何在字符串中删除一个字符。由于字符串的内存分配方式是连续分配的。我们从字符串当中删除一个字符,需要把后面所有的字符往前移动一个字节的位置。但如果每次删除都需要移动字符串后面的字符的话,对于一个长度为n的字符串而言,删除一个字符的时间复杂度为O(n)。而对于本题而言,有可能要删除的字符的个数是n,因此该
猿人谷
2018/01/17
9.1K0
java分割字符串的方法_java字符串按照特定字符分割
最近在项目中遇到一个小问题,一个字符串分割成一个数组,类似String str=”aaa,bbb,ccc”; 然后以”,”为分割符,将其分割成一个数组,用什么方法去实现呢?
全栈程序员站长
2022/11/11
2.7K0
python中删除特定字符串
import re text = ‘wo,didi;wode,;wode’ text0 = text.replace(‘didi’, ”) print(re.sub(‘[,;]’, ‘ ‘, text0))
全栈程序员站长
2022/09/02
3.4K0
java查找字符串中的字符_java – 查找字符串中最常见字符的更有效方法
执行此操作的最快方法是计算每个字符的出现次数,然后取计数数组中的最大值.如果您的字符串很长,那么在循环字符串中的字符时,不会跟踪当前最大值,您将获得不错的加速.
用户7886150
2021/04/28
1.1K0
字符串索引越界_字符串的索引和切片
数组test的长度为20 ,当我们去访问索引为21的,及第22个字符的时候会报StringIndexOutOfBoundsException,表示字符串索引越界
全栈程序员站长
2022/11/17
8910
有效的括号字符串
给定一个只包含三种字符的字符串:(、)和*,写一个函数来检验这个字符串是否为有效字符串,有效字符串具有如下规则:
WindRunnerMax
2020/08/27
6770
java中替换字符串特定字符replace,replaceAll,replaceFirst
String number = "123,456,5234,52345,63456,7456,7";
用户7886150
2021/04/07
2.6K0
mysql字符串拼接的方法_sql中拼接字符串的方法
总是记不住字符串拼接,每次都要百度去搜索,所以在这里记录一下,好方便后续的查找,如有错误和问题可以提出,谢谢。
全栈程序员站长
2022/11/14
22.2K0
mysql字符串拼接的方法_sql中拼接字符串的方法
【说站】python删除str中特定字符的方法
以上就是python删除str中特定字符的方法,希望对大家有所帮助。更多Python学习指路:python基础教程
很酷的站长
2022/11/23
3.5K0
java中字符串分割特殊字符处理_java字符串按照特定字符分割
String类型的对象在用split()方法进行字符分割的时候常常会遇到用特殊字符进行分割的情况,看JDK知道split()实际上是用的正则实现的分割,当遇到一些用特殊字符作为分割标志的时候,不使用特殊手段就会抛出java.util.regex.PatternSyntaxException异常,比如用java中的运算符号,括号等等这个时候可以使用split(“[*]”) split(“//+”)来实现特殊字符作为分割标志,[]和//就是用来解决这些问题的,但是有个例外,那就是 / ,这个符号比较麻烦,比如你的字符串是 aaa/bbb,由于在java的字符串中/ 要用//表示所以aaa/bbb用String类型的对象存放就是“aaa//bbb”,而且由于分割的时候还要转义一次所以还要多两个//,所以分割的时候就变成 split(“”)或split(” [ ]”),这才表示用一个/做分割标志。
全栈程序员站长
2022/11/11
6.2K0
如何使用VBA统计字符串中某个特定字符
如果要统计某单元格中指定的某特定字符的数量,可以使用LEN/SUBSTITUTE函数组合的经典公式(假设字符串位于单元格B2):
fanjy
2022/06/04
5.6K0
如何使用VBA统计字符串中某个特定字符
JS中的字符串方法
str.lastIndexOf(start)// " Index " 的 " I " 大写
我不是费圆
2020/09/21
4K0
php 截取特定字符串
1、php 截取特定字符后面的内容 可以使用函数strripos,获取一个字符串在另一个字符串中第一次出现的位置。
用户8099761
2023/05/11
1.4K0
原 状态机 搜索字符串中的特定占位符
问题:xz[[cenvENVzxcENV[      fffff  ]dsbgENV[fecccccc]nqe  W3]NBENV[]ZXC   这个字符串中总共有三个变量区,规定ENV[]  方括号中间包含的即是变量,那么使用的过程中需要找到这个变量在替换。 使用状态机首先需要定义系统的状态的个数及状态之间的转换过程及条件 本例中总共定义了6种状态 common char:普通字符串 env:变量内容 over:状态机终止(字符串超长)  maybe:可能属于变量 maybeOver:后面紧跟
魂祭心
2018/05/17
3.3K0
Java中替换字符串的方法
1. replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了就是字符串的意思)。
bisal
2021/10/15
5.8K0
shell中的字符串截取方法
假设有变量 str=http://www.baidu.com/12345.html
AsiaYe
2019/11/06
5.3K0
shell中的字符串截取方法
JavaScript 字符串中的 pad 方法!
作者: Dmitri Pavlutin 译者:前端小智 来源:dmitripavlutin 点赞再看,养成习惯本文 GitHub https://github.com/qq44924588... 上已
前端小智@大迁世界
2020/09/07
1.3K0
天池 在线编程 有效的字符串
描述 如果字符串的所有字符出现的次数相同,则认为该字符串是有效的。 如果我们可以在字符串的某1个索引处删除1个字符,并且其余字符出现的次数相同,那么它也是有效的。 给定一个字符串s,判断它是否有效。如果是,返回YES,否则返回NO。
Michael阿明
2021/02/19
3220
点击加载更多

相似问题

在特定位置查找索引的最简单/计算有效的方法是什么?

22

解析字符串中特定子字符串的最典型的方法是什么?

227

索引C++字符串的最简单方法是什么?

60

在字符串中跟踪标记的最有效方法是什么?

24

在iOS中跟踪时间的最有效/最精确的方法是什么?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文