0

我对模式匹配或识别完全陌生。我的问题是,如果我有一系列字符串,例如 str1:ABCAAAAAAAEFG、str2:ABCBBBBBBBBCC、str3:SSSCCCCCCCCEFG 等。我想比较这些字符串并找出相同位置的共享模式。

比如我想比较str1和str2,匹配的结果是有共享模式:ABC从头开始。第二步,比较str1和str3,结果是有一个shred pattern:从头到尾的EFG。我想对我的集合中的每两对进行比较:(str1,str2),(str1,str3),(str2,str3)。等等

我怎样才能以编程方式做到这一点。我的问题可能过于笼统,但我对这个领域完全陌生,我需要知道是否已经有一些工具或功能可以帮助我有效地做到这一点。

编辑:1)通常,字符串具有相同的长度。

4

1 回答 1

0

编写自己的程序来做到这一点应该不难。

两个字符串都从 0 开始,进行比较。如果 != 移动到下一个索引,否则标记它是匹配并移动到下一个字符。继续直到它们不匹配并记下匹配的子字符串。您可以跳到字符串中的下一个索引,因为您知道如果您从 0 到 n 匹配,从 1 开始的那个仍然会在 n 处中断并且长度更小。

哦,我希望你没有太多的字符串,因为如果你想匹配每一对,你将需要进行n(n+1)/2 比较。

于 2013-08-10T06:03:08.117 回答