Python 查找给定子字符串的最长连续运行

Python 查找给定子字符串的最长连续运行,python,arrays,string,Python,Arrays,String,假设给定一个字符串 str=“agagagatagatagatatagat” str=“AGAGAGATAGATATTAAGATAGAT” 我必须找到《阿加特》最长的连续三次。 找到每个连续“AGAT”的计数并存储它们,然后在python中获得它们的最大值。您可以使用正则表达式: >>> import re >>> str = "AGAGAGATAGATAGATATTAAGATAGAT" >>> matches = list(re.findi

假设给定一个字符串

str=“agagagatagatagatatagat”

str=“AGAGAGATAGATATTAAGATAGAT

我必须找到《阿加特》最长的连续三次。
找到每个连续“AGAT”的计数并存储它们,然后在python中获得它们的最大值。

您可以使用正则表达式:

>>> import re
>>> str = "AGAGAGATAGATAGATATTAAGATAGAT"
>>> matches = list(re.finditer("((?:AGAT)+)", str))
>>> m = max(matches, key=lambda m: m.end() - m.start())
>>> m.group(1)
'AGATAGATAGAT'

除非您要处理大量输入数据,否则我会使用正则表达式解决方案,例如:

重新导入
def最长运行时间(模式,输入):
返回最大值(返回findall(‘((?:‘+re.escape(pattern)+’)*’,输入),key=len)
这将输出:

longest_run("AGAT", "AGAGAGATAGATAGATATTAAGATAGAT") # 'AGATAGATAGAT'
longest_run("AGAT", "AGAGAGAGAGAGAGAGAGAGAGAGAGAG") # ''
import re#Regex
将numpy作为np导入
长度=[]
阿加特=[]
str=“agagagatagatagatatagat”
模式=重新编译(r'(AGAT)*')
matches=pattern.finditer(str)
对于匹配中的匹配:
length.append(len(match.group(0)))
agat.append(匹配组(0))
打印(长度)
印刷品(阿加特)
答案=最大(长度)/4
长度数组是agat的连续字符串的长度-因此在示例中有2个,一个是长度12,一个是长度8,如果你除以4,这是agat的长度,那么你将得到最大连续agat字符串


agat数组包含连续的agat字符串。

嘿,Shahzaib!欢迎来到堆栈溢出。一般来说,这类问题被认为是低质量的(特别是因为它看起来像家庭作业)。为了改进它,您应该分享一些您尝试过的代码,并指出您觉得有挑战性的特定部分。这是我的第一个问题。所以我不知道趋势。我一定会根据指导原则发布更多的问题。