字符串问题python实现(二)
2014-05-12 21:57
393 查看
问题:求字符串中重复出现且长度最长子字符串,要求输出:符合条件子字符串、其重复出现次数、其首字母位置。
分析:后缀数组方法求解。
python版代码:
分析:后缀数组方法求解。
python版代码:
# 问题:求字符串中重复出现且长度最长子字符串,要求输出:符合条件子字符串、其重复出现次数、其首字母位置。 # 分析:后缀数组方法求解。 # by chasdmeng def build_suffix_array(suffix_array, text_string): for i in range(len(text_string)): suffix_array.append(text_string[i:]) suffix_array.sort() def comlen(str_a, str_b): max_len = 0 for i in range(1, len(str_a)+1): max_len = i if str_a[:i]==str_b[:i] else max_len return max_len def longset_repeat_substring(suffix_array, text_string): max_len, max_idx = 0, 0 t={} for i in range(len(text_string) - 1): com_len= comlen(suffix_array[i], suffix_array[i+1]) if com_len in t: t[com_len]+=1 else: t[com_len] = 2 [max_len, max_idx] = [com_len, i] if com_len > max_len else [max_len, max_idx] loc = [len(text_string)-len(suffix_array[max_idx + i]) + 1 for i in range(t[max_len])] loc.sort() return suffix_array[max_idx][:max_len], t[max_len], loc if __name__ == '__main__': suffix_array = [] text_string = "yyabcdabjcabceg" build_suffix_array(suffix_array, text_string) substring, time, location = longset_repeat_substring(suffix_array, text_string) print '\nIn \'', text_string, '\', the longest string', '\'', substring, '\'occuers',\ time, 'times',',the first character position', ','.join([str(i) for i in location]), '.'
相关文章推荐
- 字符串问题python实现(一)
- 字符串包含问题 python实现
- 计算4000000000内的最大f(n)=n值---字符串的问题python实现(五岁以下儿童)
- 字符串问题python实现(三)
- 左旋转字符串问题 python实现
- Python + PHP + RSA 实现加密(解决Python-RSA无法解密一般字符串的问题)
- 计算4000000000以内最大的f(n)=n的值---字符串问题python实现(五)
- 字符串包含问题 python实现
- 字符串问题python实现(四)
- python实现字符串翻转
- Python 实现字符串中指定位置插入一个字符
- Python入门(五)字符串各种问题总结
- Python实现确认字符串是否包含指定字符串的实例
- 最短路径问题:Dijkstra算法的python实现
- Python实现遗传算法求解n-queens问题(1)
- python实现字符串全排列(注:每个字符写在了列表里)
- 算法基础之python实现贪心算法中圣诞老人分糖果问题和二分查找算法中烘干衣服问题
- N皇后问题(python实现)
- Python 字符串操作实现代码(截取/替换/查找/分割)
- 狄克斯特拉算法,解决加权最短路径问题--python实现