我有以下算法来查找两个字符串之间最长的公共子字符串,我想修改它以便它可以使用n个字符串。我不确定此函数最多会占用多少个字符串,但上限可能大约为4-6。
这是我的基本算法。
def lcs(s1, s2):
m = [[0] * (1 + len(s2)) for i in xrange(1 + len(s1))]
longest, x_longest = 0, 0
for x in xrange(1, 1 + len(s1)):
for y in xrange(1, 1 + len(s2)):
if s1[x - 1] == s2[y - 1]:
m[x][y] = m[x - 1][y - 1] + 1
if m[x][y] > longest:
longest = m[x][y]
x_longest = x
else:
m[x][y] = 0
return s1[x_longest - longest: x_longest]
答案 0 :(得分:0)
如果s1和s2是您的字符串,请将其替换为:
public ConcatPlugin(string unsecureConfig, string secureConfig)
{
_secureConfig = secureConfig;
_unsecureConfig = unsecureConfig;
}
#endregion
public void Execute(IServiceProvider serviceProvider)
{
ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = factory.CreateOrganizationService(context.UserId);
try
{
Entity entity = (Entity)context.InputParameters["Target"];
//TODO: Do stuff
}
catch (Exception e)
{
throw new InvalidPluginExecutionException(e.Message);
}
}
}
现在你可以调用lcs(s1,s2,s3,s4)
并且在函数内部,s将是一个元组,其中包含您传递的元素,在这种情况下,它将是一个包含4个字符串的元组。您也可以将一个字符串列表传递给该函数,并忘记* args。