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
等于 account
。
c
是下一个要分析的字符,就在 account
的最后一个字符之后。第二个if
块:
if c >= account[-1]:
account += c
查看 c
是否按字母顺序排在 account
的最后一个字符之后。如果是,则将其添加到 account
的末尾。 >=
对字符串的比较会按字典顺序对相同大小写的字母字符进行排序。
else
原因:
else:
account = c
如果下一个字符不按字母顺序,则清除当前子字符串并重新开始。
最终maximum
会如你所愿
额外的 ' '
也被迭代,以便第一个 if 语句将在循环完成之前再执行一次。在 python 中,' '
按字典顺序排在所有字母字符之前。
我想了解这段代码是如何工作的在幕后,感谢帮助
请解释这部分:
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
等于 account
。
c
是下一个要分析的字符,就在 account
的最后一个字符之后。第二个if
块:
if c >= account[-1]:
account += c
查看 c
是否按字母顺序排在 account
的最后一个字符之后。如果是,则将其添加到 account
的末尾。 >=
对字符串的比较会按字典顺序对相同大小写的字母字符进行排序。
else
原因:
else:
account = c
如果下一个字符不按字母顺序,则清除当前子字符串并重新开始。
最终maximum
会如你所愿
额外的 ' '
也被迭代,以便第一个 if 语句将在循环完成之前再执行一次。在 python 中,' '
按字典顺序排在所有字母字符之前。