繁体   English   中英

这段关于寻找最长子字符串的python代码,我需要解释

[英]this code in python about finding the longest sub-string , i need explaination

我想了解这段代码在幕后是如何工作,感谢帮助

请解释这部分:

MAX = ACCOUNT if len(ACCOUNT) > len(MAX) else MAX
ACCOUNT = ACCOUNT + c if c >= ACCOUNT[-1] else c

================================================

S = 'azcbobobegghaklbob'

ACCOUNT, MAX = S[0], ""

for c in S[1:] + " ":
    MAX = ACCOUNT if len(ACCOUNT) > len(MAX) else MAX
    ACCOUNT = ACCOUNT + c if c >= ACCOUNT[-1] else c

print('Longest substring in alphabetical order is:', MAX)

把代码写得更清楚,它读起来

s = 'azcbobobegghaklbob'
account = S[0]
maximum = ''
for c in s[1:] + ' ':
    if len(account) > len(maximum):
        maximum = account
    if c >= account[-1]:
        account += c
    else:
        account = c
print('Longest substring in alphabetical order is:', maximum)

maximum是迄今为止按字母顺序排列的最长子字符串。 account是按字母顺序计算的当前子字符串。

for 循环遍历'zcbobobegghaklbob ' account从字符串的第一个字符开始。 第一个if块:

if len(account) > len(maximum):
    maximum = account

如果帐户已变得大于先前的maximum ,则使maximum等于account

c是下一个要分析的字符,紧跟在account的最后一个字符之后。 第二个if块:

if c >= account[-1]:
    account += c

按字母顺序查看c出现在account的最后一个字符之后。 如果是,则将其添加到account的末尾。 字符串上的>=比较对相同大小写的字母字符按字典顺序进行排序。

else原因:

else:
    account = c

如果下一个字符不是按字母顺序排列,则清除当前子字符串并重新开始。

最后, maximum将是您想要的。

额外的' '被迭代,以便第一个 if 语句将在循环结束前再执行一次。 在 python 中, ' '出现在所有字母字符之前,按字典顺序排列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM