gpt4 book ai didi

python - 在Python中按顺序比较字符串中的字符

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:03 25 4
gpt4 key购买 nike

我想弄清楚如何将字符串中的字符与字符串中的下一个字符进行比较。例如,如果我有一个字符串:

s = 'vzcbotdebobeggglakyl'

我希望能够比较第一个字符和第二个字符,如果第二个字符大于或等于第一个字符(按字母顺序,a < b, g > e, y = y 等)我想将 1 添加到另一个变量(基本上是一个计数器)。如果不是,我想将计数器重置为 0。基本上重复字符串长度的整个过程。如果计数器变得大于 maxlen 变量,则将 maxlen 加一(或使 maxlen = sublen)。到目前为止,我的尝试是(而且我认为它有效):

s = 'vzcbotdebobeggglakyl'
sublen = 1
maxlen = 0
startnum = 0
for char in s:
stopnum = startnum + 1
if stopnum < len(s):
charone = s[startnum]
chartwo = s[stopnum]
if charone <= chartwo:
sublen += 1
startnum += 1
if sublen > maxlen:
maxlen = sublen
else:
startnum +=1
sublen = 1
else:
sublen = 0
print 'Longest substring is', maxlen, 'characters.'

现在,我还想做的是用一行打印出该字符的子字符串。我已经为此工作了五个小时,但做不好。我尝试了很多不同的东西,以至于我现在基本上比刚开始时更困惑。在上面的例子中,我想让它说

Longest substring is begggl, which is 6 characters.

最佳答案

这不太明显,但似乎有效:

seq = "vzcbotdebobeggglakyl"

import itertools
result = max(
(
list(next(sub)) + [b for a, b in sub]
for ascending, sub in itertools.groupby(zip(seq,seq[1:]), lambda x: x[0] <= x[1])
if ascending
),
key=len
)

print ''.join(result)

关于python - 在Python中按顺序比较字符串中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19562340/

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