你可以使用itertools.groupby和max:
>>> from itertools import groupby
def solve(strs):
return max((list(g) for k, g in groupby(strs, key=lambda x:int(x)%2) if not k),
key=len)
...
>>> solve('2456890048') #or pass `str(2456890048)` if you've integers.
['0', '0', '4', '8']
>>> solve('245688888890048')
['6', '8', '8', '8', '8', '8', '8']
Run Code Online (Sandbox Code Playgroud)
这里:
[list(g) for k, g in groupby('2456890048', key=lambda x:int(x)%2) if not k]
Run Code Online (Sandbox Code Playgroud)
收益:
[['2', '4'], ['6', '8'], ['0', '0', '4', '8']]
Run Code Online (Sandbox Code Playgroud)
现在我们可以max在这个列表(with key=len)上应用以获得最长的序列.(请注意,在原始代码中我使用了生成器表达式max,因此列表不会在内存中创建.)
| 归档时间: |
|
| 查看次数: |
657 次 |
| 最近记录: |