我在介绍计算机科学和使用Python编程时遇到了这个问题:
Assume s is a string of lower case characters.
Write a program that prints the longest substring of s in which the letters occur in alphabetical order. For example, if
s = 'azcbobobegghakl'
, then your program should print: Longest substring in alphabetical order is: beggh.In the case of ties, print the first substring. For example, if
s = 'abcbcd'
, then your program should print: Longest substring in alphabetical order is: abc.
我已经读了很多关于这个问题的答案(代码)。我可以说我理解这些答案背后的逻辑。你知道吗
然而,我不能理解的是“Python如何知道答案的字母顺序是正确的?”
以下是我在网上看到的正确代码,仅供参考:
s = "azcbobobegghakl"
longest = current = s[0]
for i in range (len(s) - 1):
if s[i+1] >= s[i]:
current += s[i+1]
if len(current) > len(longest):
longest = current
else:
current = s[i+1]
print("Longest substring in alphabetical order is:", longest)
同样,我理解代码背后的逻辑。我不知道的是Python如何知道答案的字母顺序是正确的。你知道吗
我知道这可能是个愚蠢的问题。但由于我是编程新手,这个问题的答案对我来说意义重大。
在这个代码中,条件
比较两个字符。在python中,比较两个字符时,就是比较它们的ascii代码。如您所见here,字符在ascii表中按字母顺序排列。你知道吗
如果按字母顺序排列,则会添加到可能的解决方案中。在另一种情况下,它只是创建一个新的可能的解决方案。你知道吗
程序跟踪到目前为止发现的最长的字母顺序子串(变量
longest
)。当它发现一个新的比它已经知道的长(current
)时,它会记住那个(longest = current
)。你知道吗相关问题 更多 >
编程相关推荐