给出一些字符串说“ 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)
我有类似上面的东西。不确定在哪里可以修复它。
答案 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