python 实现求解字符串集的最长公共前缀方法
问题比较简单,给定一个字符串集合求解其中最长的公共前缀即可,这样的问题有点类似于最长公共子序列的问题,但是比求解最长最长公共子序列简单很多,因为是公共前缀,这样的话只需要挨个遍历即可,只要遍历长度结束或者结束前发现有不相同的即可终止,返回不同位置之前的子序列即可,下面是具体的实现:
#!usr/bin/env python
#encoding:utf-8
'''
__Author__:沂水寒城
功能:求解字符串集的最长公共前缀
'''
def find_longest_prefix(str_list):
'''
求解字符串集的最长公共前缀
'''
str_list.sort(lambda x,y:cmp(len(x),len(y)))
shortest_str=str_list[0]
print str_list
max_prefix=len(shortest_str)
flag=0
for i in range(max_prefix):
for one_str in str_list:
if one_str[i]!=shortest_str[i]:
return shortest_str[:i]
break
return shortest_str
if __name__ == '__main__':
str_list1=['abcdef','abcdekljjh','abcdelopqwe','abcdj']
str_list2=['abcdef','abcdekljjh','abcdelopqwe','abcde']
print 'str_list1--->', find_longest_prefix(str_list1)
print 'str_list2--->', find_longest_prefix(str_list2)结果如下:
str_list1---> ['abcdj', 'abcdef', 'abcdekljjh', 'abcdelopqwe'] abcd str_list2---> ['abcde', 'abcdef', 'abcdekljjh', 'abcdelopqwe'] abcde [Finished in 0.3s]
相关推荐
文山羊 2020-06-19
PM实验室 2020-06-11
czsay 2020-05-07
mieleizhi0 2020-04-17
doubinning 2020-01-07
duanlove技术路途 2020-01-04
学习备忘录 2019-12-10
fanhuasijin 2019-12-09
zluxingzhe 2019-11-04
yangguangdblu 2019-06-18
Eric0Lv 2019-04-02
solarLan 2019-07-01
paopao00 2019-06-29
qitong 2019-06-29
chunjiekid 2019-06-28
tmaczt 2019-05-21
kevinweijc 2013-09-29