Những chức năng ghép nối sẽ tìm ra chuỗi chung dài nhất trong bất kỳ mảng độc đoán của chuỗi:
def long_substr(data):
substr = ''
if len(data) > 1 and len(data[0]) > 0:
for i in range(len(data[0])):
for j in range(len(data[0])-i+1):
if j > len(substr) and is_substr(data[0][i:i+j], data):
substr = data[0][i:i+j]
return substr
def is_substr(find, data):
if len(data) < 1 and len(find) < 1:
return False
for i in range(len(data)):
if find not in data[i]:
return False
return True
print long_substr(['Oh, hello, my friend.',
'I prefer Jelly Belly beans.',
'When hell freezes over!'])
Không nghi ngờ gì các thuật toán có thể được cải thiện và tôi đã không có một rất nhiều tiếp xúc với Python, do đó, có lẽ nó có thể được hiệu quả hơn cú pháp là tốt, nhưng nó nên làm công việc.
CHỈNH SỬA: xếp hàng thứ hai là hàm is_substr như được J.F. Sebastian trình bày. Cách sử dụng vẫn như cũ. Lưu ý: không thay đổi thuật toán.
def long_substr(data):
substr = ''
if len(data) > 1 and len(data[0]) > 0:
for i in range(len(data[0])):
for j in range(len(data[0])-i+1):
if j > len(substr) and all(data[0][i:i+j] in x for x in data):
substr = data[0][i:i+j]
return substr
Hope this helps,
Jason.
Kiểm tra tại đây cho [Phân tích kết hợp chuỗi con phổ biến dài nhất] (http://www.msccomputerscience.com/2014/10/analysis-of-longest-common-substring_18.html) – ARJUN