gpt4 book ai didi

python - 最长的连续字母序列

转载 作者:太空宇宙 更新时间:2023-11-03 12:55:27 24 4
gpt4 key购买 nike

假设我有一串小写字母,例如

'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 方法来解决问题?

最佳答案

您可以使用字典跟踪字符串中看到的连续字符的所有子序列,然后选择长度最大的一个。

每个子序列都由字母表中的下一个候选者键入,因此一旦在字符串中达到预期的候选者,它就会用于更新字典中相应子序列的值并添加为由下一个字母键控的新字典值:

def longest_sequence(s):
d = {}
for x in s:
if x in d:
d[chr(ord(x)+1)] = d[x] + x
else:
d[chr(ord(x)+1)] = x
return max(d.values(), key=len)

print(longest_sequence('ablccmdnneofffpg'))
# abcdefg
print(longest_sequence('ba'))
# b
print(longest_sequence('sblccmtdnneofffpgtuyvgmmwwwtxjyuuz'))
# stuvwxyz

关于python - 最长的连续字母序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44355876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com