Questions tagged «substrings»

1
计算来自数组的连续子数组的和数
我们给出阵列与所有一个[ 我] > 0。a [ 1 … n ]a[1…n]a[1 \ldots n]a [ i ] > 0a[i]>0a[i]>0 现在我们需要找到可以从其子数组中形成多少个不同的总和(其中,子数组是该数组的连续范围,即,对于某些j ,k的,总和是所有子数组的元素)。例如,如果一个= [ 1 ,2 ,1 ],则答案为4:我们可以形成1 ,2 ,3 ,4。a [ j … k ]a[j…k]a[j\ldots k]Ĵ ,ķj,kj,k一个= [ 1 ,2,1 ]a=[1,2,1]a=[1,2,1]1 ,2 , 3 ,41,2,3,4 1,2,3,4 我知道如何计算时间中不同总和的数量。Ø (ñ2)O(n2)O(n^2) 此外,我已经意识到这与经典问题类似,在经典问题中,我们需要找到字符串的不同子字符串的数量。我正在考虑构造后缀数组并以类似的方式(以时间)解决它的可能性。但是我还无法弄清楚如何对其进行修改以在这里工作。例如,如果我们使用后缀数组为一个= [ 1 ,2 ,1 ],我们将得到5案件代替的四个上可接受的那些。是否可以使用后缀数组来做到这一点,或者我在想错方向吗?Ø …

1
查找最长斐波那契子串的幼稚算法的复杂性
给定两个符号和b,我们如下定义第k个斐波那契字符串:一个a\text{a}bb\text{b}ķkk F(k )= ⎧⎩⎨b一个F(ķ - 1 )⋆ ˚F(k − 2 )如果 k=0如果 k=1其他F(k)={bif k=0aif k=1F(k−1)⋆F(k−2)else F(k) = \begin{cases} \text{b} &\mbox{if } k = 0 \\ \text{a} &\mbox{if } k = 1 \\ F(k-1) \star F(k-2) &\mbox{else} \end{cases} 与表示字符串连接。⋆⋆\star 因此,我们将拥有: F(0 )= bF(0)=bF(0) = \text{b} F(1 )= 一个F(1)=aF(1) = \text{a} F(2 …

2
快速k不匹配字符串匹配算法
我正在寻找一种快速的k不匹配字符串匹配算法。给定长度为m的模式字符串P和长度为n的文本字符串T,我需要一种快速(线性时间)算法来查找P匹配T的子字符串(最多不匹配k个)的所有位置。这与k差问题(编辑距离)不同。不匹配意味着子字符串和模式在最多k个位置具有不同的字母。我真的只需要k = 1(最多1个不匹配),因此针对k = 1的特定情况的快速算法也足够了。字母的大小为26(不区分大小写的英文文本),因此空间要求不应随字母的大小而增长太快(例如,我相信FAAST算法占用的字母空间大小是指数的,因此仅适用于蛋白质和基因序列)。 在最坏的情况下,基于动态编程的方法将趋于O(mn),这将太慢。我相信对此有Boyer-Moore算法的修改,但是我无法获得此类论文。我没有订阅访问学术期刊或出版物的权限,因此任何参考文献都必须在公共领域。 我将不胜感激任何指针,或指向免费文档的引用,或针对此问题的算法本身。


1
给定n个字符串,其中一个是另一个的子字符串吗?
假设我们得到了字符串的集合。我想知道这些字符串中的任何一个是否是集合中任何其他字符串的子字符串。换句话说,我想要一种用于以下任务的算法:ññn小号1个,… ,Sñ小号1个,…,小号ñS_1,\dots,S_n 输入:小号1个,… ,Sñ小号1个,…,小号ñS_1,\dots,S_n 输出:使得是和的子字符串,或者如果不存在这样的则为None我,Ĵ一世,Ĵi,j小号一世小号一世S_i小号Ĵ小号ĴS_ji ≠ j一世≠Ĵi\ne j我,Ĵ一世,Ĵi,j 是否有一种有效的算法? 如果将“子字符串”替换为“前缀”,则存在一种有效的算法(对字符串进行排序,然后进行线性扫描以比较相邻的字符串;排序将确保子字符串相邻)。但是测试任何字符串是否为其他字符串的子字符串似乎更具挑战性。一个朴素的算法是遍历所有对,但这需要子字符串测试。有没有更有效的算法?我,Ĵ一世,Ĵi,jΘ (n2)Θ(ñ2)\Theta(n^2) 我猜我们可以称其为“所有对子字符串测试”或类似的名称。 我的最终目标是修剪集合,以便通过删除集合中其他子字符串的每个子字符串,使任何字符串都不是其他子字符串。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.