Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这段python代码是关于查找最长的子字符串的,我需要解释一下_Python_Edx_Longest Substring - Fatal编程技术网

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

这段python代码是关于查找最长的子字符串的,我需要解释一下,python,edx,longest-substring,Python,Edx,Longest Substring,我正在努力理解这段代码在幕后是如何工作的,非常感谢 请解释此部分: ================================================ 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 >=

我正在努力理解这段代码在幕后是如何工作的,非常感谢

请解释此部分:

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

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)
max
是迄今为止按字母顺序排列的最长子字符串
account
是按字母顺序计算的当前子字符串

for循环在
'zcbobbegghaklbob'
上迭代<代码>帐户以字符串的第一个字符开始。第一个
if
块:

if len(account) > len(maximum):
    maximum = account
if c >= account[-1]:
    account += c
如果帐户大于上一个最大值,则使
最大值
等于
帐户

c
是要分析的下一个字符,就在
帐户的最后一个字符之后。第二个
if
块:

if len(account) > len(maximum):
    maximum = account
if c >= account[-1]:
    account += c
查看
c
是否按字母顺序位于
帐户的最后一个字符之后。如果是,则将其添加到
帐户的末尾。字符串的
=
比较按字母顺序对它们进行排序,以获得相同大小写的字符

else
原因:

else:
    account = c
清除当前子字符串,如果下一个字符不是按字母顺序排列,则重新开始

最后,
最大值将是您想要的


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

如果将代码写得更清楚,它会读取

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)
max
是迄今为止按字母顺序排列的最长子字符串
account
是按字母顺序计算的当前子字符串

for循环在
'zcbobbegghaklbob'
上迭代<代码>帐户
以字符串的第一个字符开始。第一个
if
块:

if len(account) > len(maximum):
    maximum = account
if c >= account[-1]:
    account += c
如果帐户大于上一个最大值,则使
最大值
等于
帐户

c
是要分析的下一个字符,就在
帐户的最后一个字符之后。第二个
if
块:

if len(account) > len(maximum):
    maximum = account
if c >= account[-1]:
    account += c
查看
c
是否按字母顺序位于
帐户的最后一个字符之后。如果是,则将其添加到
帐户的末尾。字符串的
=
比较按字母顺序对它们进行排序,以获得相同大小写的字符

else
原因:

else:
    account = c
清除当前子字符串,如果下一个字符不是按字母顺序排列,则重新开始

最后,
最大值将是您想要的


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

你有什么具体问题吗?如果len(ACCOUNT)>len(MAX)else MAX ACCOUNT=ACCOUNT+c如果c>=ACCOUNT[-1],我不理解这部分MAX=ACCOUNTelse c然后使用调试器或打印变量以查看每次迭代中发生的情况。您有任何具体问题吗?如果len(ACCOUNT)>len(MAX)else,我不理解这部分MAX=ACCOUNT如果len(ACCOUNT)>len(MAX)else MAX ACCOUNT=ACCOUNT+c如果c>=ACCOUNT[-1],则使用调试器或打印变量以查看每次迭代中发生的情况。