擅长:python、mysql、java
<p>@abarnert的答案是正确的,但是<code>str.split()</code>返回a list子字符串。意思是内存使用量是<code>O(N)</code>(例如,使用大量内存)。这不是一个问题,当你的输入是短的,但当处理DNA序列,你的输入通常是很长的。为了避免内存开销,您需要使用迭代器。我推荐<code>re</code>的<code>finditer</code>。你知道吗</p>
<pre><code>import re
_find_n_free_substrings = re.compile(r'[^N]+', re.MULTILINE).finditer
def longest_n_free_substring(string):
substrings = (match.group(0) for match in _find_n_free_substrings(string))
return max(substrings, key=len)
</code></pre>