0

我正在尝试从包含字符串行的文本文件中找到最长的公共序列。输出也应该是带有对齐行的文本文件,例如:

查找序列 - efghijk

输出文件:

abcdefghijklmno     
  dfefghijkrumlp    
 swrefghijkawsfce   
wsveefghijksxl  

我正在考虑使用 difflib,将行保存到列表,然后比较 list[0] 和 list[1],从这两个字符串中找到最长的序列,然后 difflib(None, sequence, list[2]) 等。

但是我在编码时遇到了一些麻烦,我绝对不知道如何处理输出文件。

谢谢你的建议,扬

4

1 回答 1

0

打印输出非常容易。想象一下,您已经获得了字符串中最长公共子字符串开始的位置。对于您的示例,它将是[4, 2, 3, 4]. 现在只需将所有字符串移动max(begins) - begins[i]- 它会正确缩进字符串。

strings = ("abcdefghijklmno", "dfefghijkrumlp", "swrefghijkawsfce", "wsveefghijksxl")
positions = (4, 2, 3, 4)

maxpos = max(positions)

for i in range(len(strings)):
    print (" " * (maxpos - positions[i])) + strings[i]
于 2014-03-31T13:02:43.487 回答