为什么 Python 使用以下代码知道答案按字母顺序正确?



我在《计算机科学与编程导论》中使用Python时遇到了这个问题:

假定 s 是小写字符的字符串。

编写一个程序,打印 s 的最长子字符串,其中字母按字母顺序出现。例如,如果s = 'azcbobobegghakl',则程序应打印: 按字母顺序排列的最长子字符串是:beggh。

如果是领带,请打印第一个子字符串。例如,如果s = 'abcbcd',则程序应打印: 按字母顺序排列的最长子字符串是: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如何知道答案按字母顺序正确。

我知道这可能是一个愚蠢的问题。但是由于我是编程新手,这个问题的答案对我来说意义重大。

在此代码中,条件

if s[i+1] >= s[i]

比较两个字符。在python中,当你比较两个字符时,你是在比较他们的ascii代码。正如您在此处看到的,字符在 ascii 表中按字母顺序排列。

如果按字母顺序排列,则会将其添加到可能的解决方案中。在其他情况下,它只是创建一个新的可能解决方案。

程序跟踪迄今为止找到的最长的字母子字符串(变量longest(。当它找到一个新的比它已经知道的长(current(时,它会记住那个(longest = current(。

最新更新