2012-09-26 54 views
0
的最長匹配的後綴

我有兩個字符串,如:重新找到兩個字符串

a = '54515923333558964' 
b = '48596478923333558964' 

現在最長後綴匹配

c = '923333558964' 

這將是重新使用的解決方案?

這裏是一個解決方案,我發現前綴匹配:

import re 
pattern = re.compile("(?P<mt>\S*)\S*\s+(?P=mt)") 
a = '923333221486456' 
b = '923333221486234567' 
c = pattern.match(a + ' ' + b).group('mt') 
+2

你爲什麼要使用're'呢? –

+0

另外:http://whathaveyoutried.com – Minion91

+0

@MartijnPieters沒有什麼特別的任何解決方案,然後循環很好 – sharafjaffri

回答

1

您可以使用正則表達式模式的這種變化:

\S*?(?P<mt>\S*)\s+\S*(?P=mt)$ 

編輯。 但是,請注意,這可能需要O(n )時間與一些輸入。嘗試

a = 1000 * 'a' 
b = 1000 * 'a' + 'b' 

這需要一秒鐘來處理我的系統。

6

嘗試difflib.SequenceMatcher

import difflib 
a = '54515923333558964' 
b = '48596478923333558964' 

s = difflib.SequenceMatcher(None, a, b) 
m = s.find_longest_match(0, len(a), 0, len(b)) 
print a[m.a:m.a+m.size] 
+0

@eumiro ..你能解釋一下你用這個方法嗎? –

+0

@RohitJain查看鏈接的文檔 – eumiro

相關問題