python 得到数组的最长重复子数组
通过所有后缀数组的最长公共数组的思想, 参考https://blog.csdn.net/renwotao2009/article/details/53039068
# coding=utf8
def get_common_len(list1, list2):
"""得到共同序列的长度"""
common_len =for i in range(min(len(list1), len(list2))):
if list1[i] != list2[i]:
break
common_len += 1
return common_len
def compute_max_sub_list(name_list):
# 1. 得到所有的后缀数组
suffix_sub_list = []
for i in range(len(name_list)):
suffix_sub_list.append(name_list[i:])
# 2.后缀子数组 排序
suffix_sub_list.sort()
// print suffix_sub_list
# 3.求相邻的后缀子数组 的最长公共数组
max_suffix_sub = []
for i in range(len(suffix_sub_list) - 1):
common_len = get_common_len(suffix_sub_list[i], suffix_sub_list[i + 1])
if common_len <= len(max_suffix_sub):
continue
max_suffix_sub = suffix_sub_list[i][:common_len]
for name in max_suffix_sub:
print name
if __name__ == '__main__':
compute_max_sub_list([4, 1, 2, 3, 2])
compute_max_sub_list([u"规则1", u"名字1", u"名字2", u"名字3", u"规则2", u"名字1", u"名字2", u"名字3"])输出的结果:
名字1 名字2 名字3
相关推荐
CodeAsWind 2020-08-17
sunnyhappy0 2020-07-09
cxcxrs 2020-06-26
深思千年 2020-06-10
xmwang0 2020-06-01
fgleeldq 2020-05-27
ShiShuo 2020-05-16
文山羊 2020-05-08
tengyuan 2020-05-07
Leewoxinyiran 2020-05-06
sschencn 2020-05-04
vevoly 2020-05-04
一只码畜 2020-04-22
sulindong0 2020-03-09
GoatSucker 2020-02-24
sdwylry 2020-02-14