最近我参加了一次面试,被问到了这个问题。
给定一个可以具有 insert
、delete
和 substring
函数的字符串。
substring
函数返回作为参数给出的从开始索引到结束索引的字符串。
所有三个选项都是随机顺序的,使用什么有效的数据结构。
最佳答案
我假设这里的插入
或删除
操作可以在字符串的中间执行,而不仅仅是结束。否则,像 c++ vector
或 python list 这样的东西就足够了。
否则,Rope数据结构是一个非常好的候选者。它允许所有这些操作在 O(logN) 内完成,我认为这是任何人都希望的最好结果。对于编辑者或操作巨大的字符串(例如基因组数据)来说,这是一个不错的选择。
编辑者的另一个相关且更常见的选择是 Gap Buffer.
关于data-structures - 存储字符串的最佳数据结构是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49126189/