#!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:给定一个字符串,寻找最长重复子串 ''' from collections import Counter def slice_window(one_str,w=1): ''''' 滑窗函数 ''' res_list=[] for i in range(0,len(one_str)-w+1): res_list.append(one_str[i:i+w]) return res_list def main_func(one_str): ''''' 主函数 ''' all_sub=[] for i in range(1,len(one_str)): all_sub+=slice_window(one_str,i) res_dict={} #print Counter(all_sub) threshold=Counter(all_sub).most_common(1)[0][1] slice_w=Counter(all_sub).most_common(1)[0][0] for one in all_sub: if one in res_dict: res_dict[one]+=1 else: res_dict[one]=1 sorted_list=sorted(res_dict.items(), key=lambda e:e[1], reverse=True) tmp_list=[one for one in sorted_list if one[1]>=threshold] tmp_list.sort(lambda x,y:cmp(len(x[0]),len(y[0])),reverse=True) #print tmp_list print tmp_list[0][0] if __name__ == '__main__': print "测试结果:" one_str='abcabcd' two_str='abcabcabd' three_str='bbbbbbb' main_func(one_str) main_func(two_str) main_func(three_str)
以上就是Python实现针对给定字符串寻找最长非重复子串的详细内容,更多请关注Gxl网其它相关文章!
查看更多关于Python实现针对给定字符串寻找最长非重复子串的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did81526