問題比較簡單,給定一個字符串集合求解其中最長的公共前綴即可,這樣的問題有點類似于最長公共子序列的問題,但是比求解最長最長公共子序列簡單很多,因為是公共前綴,這樣的話只需要挨個遍歷即可,只要遍歷長度結束或者結束前發現有不相同的即可終止,返回不同位置之前的子序列即可,下面是具體的實現:
#!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']abcdstr_list2---> ['abcde', 'abcdef', 'abcdekljjh', 'abcdelopqwe']abcde[Finished in 0.3s]
以上這篇python 實現求解字符串集的最長公共前綴方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答