最常见的子序列替代方案

时间:2017-02-16 07:42:57

标签: javascript

我想问你关于LCS算法的任何替代方案。

我在javascript中实现了LCS算法,它的工作原理如下

string_A: 'hello from london sample'
string_B: 'londons'
result: 'londons'

但我正在寻找只显示两个字符串的公共部分的算法,因此function(string_A, string_B)的结果应为london

1 个答案:

答案 0 :(得分:1)

实际上,这个算法似乎有点太具体,只能严格捕获公共子串。它可能比您的情况需要更灵活。它会捕获string_Astring_B的所有符号,这些符号在LCS( 'hello from london sample', 'hfls' ); // returns 'hlfs' LCS( 'hello from london sample', 'from amazing london' ); // returns 'from london' 中以相同的顺序发生,无论是否存在其他符号:

string_B

为了严格地提取公共部分,解决方案可以非常明显。只需测试string_A中包含function LCSS( a, b ) { let len = b.length, originalLen = b.length; do { for ( let i = 0; i <= originalLen - len; i++ ) { let needle = b.substr( i, len ); if ( a.indexOf( needle ) !== -1 ) return needle; } } while ( len-- > 0 ); return false; } 的所有可能子字符串,从最长的开始。所以我建议我自己的版本:

class Team(models.Model):
    members= models.ManyToManyField(Employee)

尝试工作:http://codepen.io/pttsky/pen/rjbOza