python实现求解字符串集的最长公共前缀

来源:互联网 发布:加工中心仿真软件 编辑:程序博客网 时间:2024/06/06 02:36

    问题比较简单,给定一个字符串集合求解其中最长的公共前缀即可,这样的问题有点类似于最长公共子序列的问题,但是比求解最长最长公共子序列简单很多,因为是公共前缀,这样的话只需要挨个遍历即可,只要遍历长度结束或者结束前发现有不相同的即可终止,返回不同位置之前的子序列即可,下面是具体的实现:


#!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_strif __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']abcdstr_list2---> ['abcde', 'abcdef', 'abcdekljjh', 'abcdelopqwe']abcde[Finished in 0.3s]


原创粉丝点击