【发布时间】:2017-06-03 13:00:49
【问题描述】:
我有一个代码分配,但我找不到答案,所以我在网上查了一下。代码是用python编写的。代码绝对正确,但我无法理解。我对python很陌生,所以请帮助我。
问题来了
假设 s 是一串小写字符。
编写一个程序,打印 s 中字母按字母顺序出现的最长子串。例如,如果 s = 'azcbobobegghakl',那么你的程序应该打印
按字母顺序排列的最长子串是:beggh 在平局的情况下,打印第一个子字符串。例如,如果 s = 'abcbcd',那么你的程序应该打印
按字母顺序排列的最长子串是:abc
代码是:
# initialise tracker variables
maxLen=0
current=s[0]
longest=s[0]
# step through s indices
for i in range(len(s) - 1):
if s[i + 1] >= s[i]:
current += s[i + 1]
# if current length is bigger update
if len(current) > maxLen:
maxLen = len(current)
longest = current
else:
current=s[i + 1]
i += 1
print ('Longest substring in alphabetical order is: ' + longest)
【问题讨论】:
-
一次做一份声明并阅读文档。你哪部分有问题?顺便说一句,
for循环的缩进不正确 - 这在 python 中很关键。 -
我可以为你逐行分解,但你最好打开IDLE,一一输入这些行,并检查沿途的变量,这样你就可以看看它在做什么。或者你可以用 print 语句来点缀这个东西,这样你就可以看到它是怎么做的......