[英]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.