假设我有一个小写字母字符串,例如:
'ablccmdnneofffpg'
我的目标是找到字符串中连续数字的最长序列,本例中为:
'abcdefg'
直觉上,我们可以找到每个字母的循环并获取从该字母开始的最长序列。一个可能的解决方案是:
longest_length = 0
start = None
current_start = 0
while current_start < len(word) - longest_length:
current_length = 1
last_in_sequence = ord(word[current_start])
for i in range(current_start + 1, len(word)):
if ord(word[i]) - last_in_sequence == 1:
current_length += 1
last_in_sequence = ord(word[i])
if current_length > longest_length:
longest_length = current_length
start = current_start
while (current_start < len(word) - 1 and
ord(word[current_start + 1]) - ord(word[current_start]) == 1):
current_start += 1
current_start += 1
还有其他更少行数的解决问题的方法吗?或者甚至可以使用一些Pythonic方法吗?