如何在Python中找到给定字符的最大重复子串?

时间:2019-05-12 22:14:19

标签: python algorithm

给出一些字符串说“ aabaaab”,我将如何找到a的最大子字符串。因此它应该返回“ aaa”。任何帮助将不胜感激。

def sub_string(s):


   best_run = 0
   current_run = 0

   for char in s:
      if char == 'a'
          current_run += 1
      else:
        current_letter = char

   return(best_run)

我有类似上面的东西。不确定在哪里可以修复它。

2 个答案:

答案 0 :(得分:1)

不是最有效的方法,而是一种简单的解决方案:

word = "aasfgaaassaasdsddaaaaaafff"

substr_count = 0
substr_counts = []
character = "f"
for i, letter in enumerate(word):
    if (letter == character):
        substr_count += 1
    else:
        substr_counts.append(substr_count)
        substr_count = 0
    if (i == len(word) - 1):
        substr_counts.append(substr_count)

print(max(substr_counts))


答案 1 :(得分:0)

如果您想要使用标准python工具的简短方法(并且避免在迭代时编写循环来重建字符串),则可以使用regex将字符串除以任何非{a字符,然后得到{{ 1}}根据max()

len

import re test_string = 'aabaaab' split_string_list = re.split( '[^a]', test_string ) longest_string_subset = max( split_string_list, key=len ) print( longest_string_subset ) 库用于正则表达式,re是用于任何非{'[^a]'字符的正则表达式语句。基本上,a根据正则表达式上的任何匹配被分成一个列表,因此它变成'aabaaab'。然后,[ 'aa' 'aaa' '' ]语句根据max()(又称长度)查找最长的字符串。

您可以在文档中进一步了解len之类的功能:https://docs.python.org/2/library/re.html