#!encoding=utf8
def prefix(str_list):
'''
寻找最大前缀
str_list: ['aa', 'bbb', 'abc]
'''
print(f'需要寻找最大前缀的字符串列表 {str_list}')
# 只有一个字符串,最大前缀就是本身
if len(str_list) <= 1:
return str_list
# 统计所有字符串长度最短的,最大前缀不可能超过最短的字符串
len_str_list = [len(i) for i in str_list]
min_len = min(len_str_list)
print(f'长度最短的字符串长度为: {min_len}')
result_prefix = []
for no in range(1, min_len + 1):
# 截取0到no位置的字符串
new_list = [s[0:no] for s in str_list]
print(f'正在寻找最大前缀的列表 {new_list}')
d = {}
for i in new_list:
count_i = new_list.count(i)
# 存在共同前缀
if count_i > 1:
d[i] = count_i
if d:
result_prefix = list(d.keys())
else:
break
return result_prefix
if __name__=='__main__':
# str_list = []
# str_list = ['aaa']
str_list = ['aacdd', 'aaadd', 'ccc', 'ccccdd', 'aaacc']
result_prefix = prefix(str_list=str_list)
print(f'找的最大前缀的结果 {result_prefix}')
python算法获取字符串最大前缀
于 2022-02-15 09:23:07 首次发布