我想问你关于LCS算法的任何替代方案。
我在javascript中实现了LCS算法,它的工作原理如下
string_A: 'hello from london sample'
string_B: 'londons'
result: 'londons'
但我正在寻找只显示两个字符串的公共部分的算法,因此function(string_A, string_B)
的结果应为london
。
答案 0 :(得分:1)
实际上,这个算法似乎有点太具体,只能严格捕获公共子串。它可能比您的情况需要更灵活。它会捕获string_A
中string_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)