我正在寻找如何从一组不同的字符串中识别常见的字符 长度。首先让我告诉在这里发布的相同问题,并且作者能够以某种方式找到答案。但我无法得到他的解决方案。我试图发布我的查询 在那里,但不确定我是否会得到任何答复。所以我发布了一个新的。 (这是 旧qs Find common chars in array of strings, in the right order的链接 的串 - 内式右顺序)。
我从他那里得到了同样的例子。
我们假设“+”是“通配符”:
阵列( 0 => '48ca135e0 5 $', 1 => 'b8ca136a0 5 $', 2 => 'c48ca13730 5 $', 3 => '48ca137a0 $ 5');
应该返回:
$通配符= '+ 8ca13 + 0 $ 5';
这在我看来是一个标准问题。所以我怀疑会有一些图书馆 为了这。如果没有,请说明解决这个问题。
我不认为比较char-by-char工作(如回复中所述),becoz匹配的char可以进入任何地方(例如: - arr1 [1]和arr2 [3]可以开始匹配某些子串的索引另一种方式)。
的问候,
答案 0 :(得分:0)
看起来你正在寻找“最长的常见子串”。第一个最常见的子串是8ca13,第二个最长的是0 $ 5。一旦我们有了这两个字符串,你就可以获取集合中的任何字符串,并用一个+替换额外的字符。
http://en.wikipedia.org/wiki/Longest_common_substring_problem